close

step 1. 使用rails script建立project
os:~ $ rails new demo #建立新project,名稱為demo
os:~ $ cd demo
os:~/demo $ rails generate controller Say hello #建立controller和view


注意RESTful設計的慣例,所有的Controller命名都是第一個字母要大寫且為複數,(這是Rails命名習慣、規則),檔案名稱依照慣例都是{Controllers}_controller.rb,而內會定義對應的action。rails generate可縮寫為rails g。

step 2. 簡易目錄結構
demo/----app/ ----controller/ --- say_controller.rb
| |
| |-----------views/ --- say/ ---hello.html.erb
|
---confing/ ---router.rb
app/controllers/say_controller.rb:controller(控制器)主要邏輯判斷程式碼都在此裡面
app/views/say/hello.html.erb:view(檢視)用來顯示網頁,erb是embedded ruby file縮寫(在Rails2為ehtml)
config/router.rb:route(路由)用來設定路徑

step 3. app/controllers/say_controller.rb(controller code)
os:~/demo $ cat app/controllers/say_controller.rb
class SayController < ApplicationController #繼承ApplicationController
  def hello #宣告hello method
    @date = Time.now
  end
end

controller部分主要是邏輯判斷和一些模型及環境參數傳遞,此範例只是簡易顯示Hello World,所以此處無需修改

step 4. app/views/say/hello.html.erb(view code)
將內容改成下面
os:~/demo $ cat app/views/say/hello.html.erb
<h1>Ruby on Rails3</h1>
<p>Hello World!</p>
<!-- <%= %>為erb語法,可內嵌ruby code -->
<p>It's now <%= @date %></p>
<% files = Dir.glob('*') %>
<%# It's comment %>
<p>
<% files.each do |f| %>
<li>file: <%= f %>
<% end %>
</p>

html.erb內容就是寫html,可內嵌ruby語法
<%= %> 執行嵌入式ruby code會回傳值
<% %> 執行嵌入式ruby code不會回傳值
<%# %> 註解
%% 表示%

step 5. config/router.rb(route config
os:~/demo $ perl -ne 'print if ($_ !~ /^\s+#|^$/)' config/routes.rb #只顯示設定部分,註解不顯示
Demo::Application.routes.draw do
get "say/hello" #設定路徑
end

get "say/hello"表示http request對應到controller/action
get是http request method:在http 1.1中定義OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT八種
say/hello是對應的controller/action

step 6. web server
os:~/demo $ rails server #啟動web server
若有顯示Error: Coulr not find a JavaScript runtime.錯誤訊息,表示系統沒有預設java script interpreter,可安裝therubyracer給Rails使用,在Gemfile內添加下面兩行
gem 'execjs'
gem 'therubyracer'
然後再執行
os:~/demo # bundle install
webrick為rails預設web server,啟動web server後,可在瀏覽器開啟http://localhost:3000和http://localhost:3000/say/hello網頁

step 7. review
rails generte Controller class method指令會產生class和對應的method
class就是app/controllers/class_controller.rb,內定義的method就是要view的網頁
method就是app/views/say/method.html.erb
而瀏覽器瀏覽網頁時路徑的對應就是使用route去解析對應,所以要去注意config/router.rb

arrow
arrow
    全站熱搜

    wsunccake 發表在 痞客邦 留言(0) 人氣()