2011-05-20 105 views
0

這應該相當容易。我跟着一個相當過時的視頻課程,因爲它看起來像但我想弄清楚這一點:Rails:簡單路由問題

我創建了一個名爲「說,」,然後創建一個say_controller.rb控制器。裏面有,我創建了一個名爲新方法「你好,」所以say_controller內部看起來是這樣的:

class SayController < ApplicationController 
    def hello 
     respond_to do |format| 
     format.html # index.html.erb 
     format.xml { render :xml => @derps } 
     end 
    end 

end 

然後,我創建了一個hello.html.erb下/應用/視圖/說/有一些HTML在裏面。如果您嘗試在localhost:3000/say/hello中訪問它,則會出現路由錯誤。所以我說這routes.rb中:

match 'say/hello' => 'say#hello' 

這裏的問題,但 - 如果你運行Rails生成腳手架DERP,然後在路線你會看到

resources:derps 

,就是這樣的會唯一在那裏。 Rails如何知道在沒有特定匹配命令的情況下路由到它?即我看到這裏發生了什麼,但我想理解這個理論。 更重要的是,當我手工創建視圖和控制器時,我需要依賴什麼(我是否必須這樣做?) - Rails中的標準過程是爲每個手動添加一行到routes.rb,並手動添加一行每個視圖/控制器?

的Merci :)

回答

4

resources及其變種奇異路由resource實際上說明符在使其成爲一個更容易定義應用程序是如何呈現的URL明智的希望,同時建立多條航線。

您可以在rake routes列表中看到生成的路線。這些都可以用一系列的match聲明手動指定,但通常這不是一個非常有效的方法。

使用resources的原因是爲了鼓勵符合標準的REST約定。