2009-09-07 38 views
0

我目前正在遵循Simply Rails 2書中的Shovell教程。在168頁,它提到URL Helpers for the Story Resource如何在Rails中檢查模型資源的URL助手?

stories_path     /stories 
new_story_path    /stories/new 
story_path(@story)   /stories/1 
edit_story_path(@story)  /stories/1/edit 

以上,然後在控制器中使用:

def create 
    @story = Story.new(params[:story]) 
    @story.save 
    redirect_to stories_path 
end 

routes.rb

ActionController::Routing::Routes.draw do |map| 
    map.resources :stories 
    map.connect ':controller/:action/:id' 
    map.connect ':controller/:action/:id.:format' 
end 

看起來stories_path是URL名稱/stories。這是明確定義在我的應用程序的某處,我似乎無法grep該關鍵字。如果沒有,我有辦法從Rails控制檯或其他地方查看上面的映射嗎?在Django中,url名稱通常在urls.py中明確定義,我只是無法弄清楚上面是如何生成的。任何文檔和指針都會有所幫助。

回答

0

我想檢查出的Rails Guides on Routing會幫助你很多明白這是怎麼回事

總之,通過使用

map.resources :stories 

路由器會自動生成一些有用的(一d RESTful)路線。他們的路徑將採用模型名稱(請記住,在Rails中有Convention over Configuration座標),並且默認情況下會爲所有REST動作生成路由。

此路線都可以通過你的控制器,視圖等

如果你想看看哪些路由從圖譜所產生的,您可以使用「耙路線」命令。

現在,您可以在您的routes.rb文件中爲不符合REST範例的操作或事件寫明確的URL。

對於這一點,你可以使用

map.connect "/some_kind_of_address", :controller => :pages, :action => "something_else" 

或者

map.home "/home", :controller => :pages, :action => "home" 

最後一次的給你,你可以在代碼中使用這兩種home_path和HOME_URL路線。

1

要得到映射的路線列表:

rake routes 

什麼map.resources:故事正在做的是映射從stories_controller.rb了RESTful的行動(指數,顯示,編輯等)來命名路由那麼你可以使用簡單。

routes.rb中包括定義新的路線,它可能是值得花時間的API中尋找資源一點點更好地瞭解有用的提示: http://api.rubyonrails.org/classes/ActionController/Resources.html#M000522