2010年9月23日 星期四

Ruby on Rail - 拿到GET Method參數值

Ruby on Rail設計理念也是Model View Controller的基本
如果手邊的電腦是Leopard或是Snow Leopard就直接打開Terminal 打上
cd ~/Sites
rails getTest
之後會看到下方的message
      create 
      create  app/controllers
      create  app/helpers
      create  app/models
      create  app/views/layouts
      create  config/environments
      create  config/initializers
      create  config/locales
      create  db
      create  doc
      create  lib
      create  lib/tasks
      create  log
      create  public/images
      create  public/javascripts
      create  public/stylesheets
   [以下省略]
ruby on rail就會新增這麼多的資料夾在getTest底下
重點當然就是controllers, models, views啦
這篇的入門很簡單,就是當使用者打上
http://127.0.0.1?name=michael
的時候ruby server會回傳michael這個值給瀏覽器
這個就是name=michael就是GET Method用的的參數(name)和參數值(michael)

這麼簡單的例子,我們只需要新增controller就可以了
在Terminal getTest/ 底下打上
script/generate controller EchoTest
會跑出底下的訊息
      exists  app/controllers/
      exists  app/helpers/
      create  app/views/echo_test
      create  test/functional/
      create  test/unit/helpers/
      create  app/controllers/echo_test_controller.rb
      create  test/functional/echo_test_controller_test.rb
      create  app/helpers/echo_test_helper.rb
      create  test/unit/helpers/echo_test_helper_test.rb
就在app/controllers底下新增了echo_test_controller.rb
接下來就是編寫其內容
==================================

class EchoTestController < ApplicationController
  def index
     render :text => 'Hello ' + params[:name]
  end
end

================================== 
存檔之後
我們來要設定一下routes.rb
在config/routes.rb中最後面幾行
# Install the default routes as the lowest priority.
  # Note: These default routes make all actions in every controller accessible via GET requests. You should
  # consider removing or commenting them out if you're using named routes and resources.
  map.connect ':controller/:action/:id'
  map.connect ':controller/:action/:id.:format'
請把最後兩行前面加上#

#  map.connect ':controller/:action/:id'
#  map.connect ':controller/:action/:id.:format'


加上一行
map.connect '/getTest', :controller => 'echo_test'
這行是要告訴server 當使用者打上
http://127.0.0.1/getTest 要用 echo_test_controller.rb這個controller 也就是我們名命的EchoTestController來做事情
 
最後把server啟動
還有一點要注意就是只有administrator才可以用80這個port
所以我們要這樣打(一樣是在getTest/ 底下)
 sudo script/server -p 80
Password:
輸入密碼後會看到

=> Booting Mongrel
=> Rails 2.3.5 application starting on http://0.0.0.0:80
=> Call with -d to detach
=> Ctrl-C to shutdown server
表示server在run了哦

打開Browser,在網址的地方輸入
http://127.0.0.1/getTest?name=michael
就會看到
Hello michael
在網頁上了

沒有留言:

張貼留言