3-rails-syntax
สำหรับบทความในส่วนของก่อนหน้านี้ผมได้แนะนำการสร้าง controller และ action เบื้องต้นมาแล้วซึ่งสามารถอ่านได้จาก เริ่มต้นกับ Ruby On Rails ตอนที่ 2 Hello World With Rails สำหรับในบทความนี่้ผมจะมาแนะนำการทำให้บทความของคุณเป็น web dynamic โดยการใช้ rails กันครับ

แนะนำการใช้งาน ruby syntax

สำหรับผู้ที่ยังไม่แคยได้ลองเขียน rails จริงๆ อาจจะเกิออาการงงระว่าง
<%%> กับ <%=%>
ว่ามันต่างกันอย่างไร ซึ่งในที่นี้ผมขออธฺบายคร่าวๆ ละกันนะครับ <%%> จะเป็นการใช้ในกรณีที่เราไม่ต้องการให้สิ่งที่อยู่คร่อมด้วยเครื่องหมายนี้แสดงออกมาเป็น html หรือพูดง่ายๆ ว่าไม่ต้องการให้ผู้ใช้งานเห็นแต่หากว่าเปลี่ยนมาเป็น <%=%> จะืำให้ผู้ใช้มองเห็นเนื่องจากจำมีการสร้าง html สำหรับให้ browser นำไปแสดงผลด้วย เราลองมาดูผลกันครับ ให้ทำการแก้ไขไฟล์ helloappviewssayhello.erb โดยการเพิ่มโค้ดตามนี้ครับ

9
10
11
12
13
14
    <p>
	<ul>
		<li>Addition:<%1+1%></li>
		<li>Addition:<%=1+1%></li>
	</ul>
    </p>

3-rails-syntax
เมื่อได้เข้าไปยัง http://localhost:3000/say/hello เราพบว่าในบรรทัดแรกจะไม่มีการนำค่าที่ได้จากการคำนวนออกมาแสดงผลเนื่องจากว่าการใช้เครื่องหมาย <%%> แต่ในบรรทัดถัดมามีการแสดงค่าที่ได้จากการคำนวนคือ 2 เนื่องจากการใช้งาน <%=%>

การวนลูปที่มีหลากหลาย

ในกรณีที่เราต้องการให้ app ของเราแสดงผลซ้ำอย่างเช่นแสดงผลคำว่า Hello Rails หลายๆ ครั้งเราสามารถเขียนโค้ดได้หลายวิธีมากตามความถนัดของเรา ซึ่งในแต่ละอันจะหมายถึงการแสดง Hello Rails!.. สามครั้งหมด

15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
    <p>
	<% 3.times do%>
		Hello Rails!..<br/>
	<%end%>
    <p>
    <p>
	<% for i in (1..3) do%>
		Hello Rails!..<br/>
	<%end%>
    <p>
    <p>
	<% (1..3).each do |i|%>
		Hello Rails!..<br/>
	<%end%>
    <p>
    <p>
	<% 1.upto(3) do |i|%>
		Hello Rails!..<br/>
	<%end%>
    <p>
     <p>
	<% 3.downto(1) do |i|%>
		Hello Rails!..<br/>
	<%end%>
    <p>

สนุกกับเวลา

ใน rails ผมบอกเลยว่าทุกสิ่งทุกอย่างที่เขียนลงไปในโปรแกรมแถบจะเหมือนภาษาของมนุษย์ครับ ซึ่งในเรื่องเวลาก็เหมือนกันเราลองมาเล่นกับเวลาดูกันเลยครับ ให้แก้ไขโค้ดเพิ่มเติมในส่วนของ helloappviewssayhello.erb โดยเพิ่มโค้ดในส่วนด้านล่างลงไป

40
41
42
43
44
45
46
47
48
49
50
51
52
    <p>
	Playing wirh Time
	<ul>
		<li>Time.now <%=Time.now%></li>
		<li>1.hours.ago <%=1.hours.ago%></li>
		<li>1.hours.from_now <%=1.hours.from_now%></li>
		<li>Time.now.at_beginning_of_day <%=Time.now.at_beginning_of_day%></li>
		<li>Time.now.at_beginning_of_month <%=Time.now.at_beginning_of_month%></li>
		<li>Time.now.at_beginning_of_year <%=Time.now.at_beginning_of_year%></li>
		<li>Time.now.at_midnight<%=Time.now.at_midnight%></li>
		<li>Time.now.to_date <%=1.hours.ago%></li>
	</ul>
    <p>

3-rails-playing-with-time
จากโค้ดในส่วนนี้จะเห็นได้ว่าในการเขียนโค้ดที่เกี่ยวกับเวลาทุกบรรทัดที่ได้ยกตัวอย่างมีลักษณะคล้ายกับภาษามานุษย์มาก เช่นผมต้องการเวลา 1 ชั่วโมงก่อนสามารถใช้ 1.hours.ago ได้เลย

Controller และ View

ในกรณีที่เราต้องการส่งค่าที่ได้จากการคำนวนหรือประมวณผลไปให้ view แสดงเราสามารถใช้เครื่องหมาย @ นำหน้าได้จะืำืำทำให้ view สามารถเห็นตัวแปรนั้นที่ controller สร้างได้ ตัวอย่างให้ทำการแก้ไข helloappcontrollerssay_controller.rb

1
2
3
4
5
6
7
class SayController < ApplicationController
	def hello
		@time = Time.now
	end
	def bye
	end
end

จากนั้นให้เราทำการเพิ่มโค้ดในส่วนของการแสดงผลของ action hello โดยแก้ไขไฟล์ helloappviewssayhello.erb ดังนี้

53
54
55
56
57
58
59
60
61
62
63
64
    <p>
	Playing with @time
	<ul>
		<li>@time <%= @time%></li>
		<li>@time.ago(1.hours) <%= @time.ago(1.hours)%></li>
		<li>@time.at_beginning_of_day <%=@time.at_beginning_of_day%></li>
		<li>@time.at_beginning_of_month <%=@time.at_beginning_of_month%></li>
		<li>@time.at_beginning_of_year <%=@time.at_beginning_of_year%></li>
		<li>@time.at_midnight<%=@time.at_midnight%></li>
		<li>@time.to_date <%=@time.to_date%></li>
	</ul>
    <p>

3-rails-playing-with-time1
จากการแสดงผลเราพบว่าตัวแปร @time ที่ส่งมาจาก Controller สามารถใช้งานได้ใน view โดยให้ผลการแสดงเหมือนกันกับการใช้ Time.now

ไฟล์ hello-tutorails-3.rar

108 views

One Response to “เริ่มต้นกับ Ruby On Rails ตอนที่ 3 Make Web Dynamic”

» You can leave a response or Trackback .

  1. exodus_tt Says:

    สอนบ้างๆ ฮาๆ …

» Trackbacks/Pingbacks

Leave a Reply