2011-10-06 47 views
8

我剛剛安裝了Ruby on Rails,並創建了一個名爲posts的腳手架。 RoR爲我生成控制器和其他必需的文件。如何更換軌道上的紅寶石路線?

我在posts_controller中創建了一個新方法,但我無法訪問它。我查看了控制器中的其他方法,看起來像我需要通過/posts/[MY POST ID]/[MY METHOD NAME]訪問它們。

假設我在控制器中創建了自定義方法hello,如何訪問它?我看着routes.rb,但沒有配置。

更新時間:

我知道我可以手動routes.rb配置,但如何所有其他方法的工作?例如,我在「posts_controller.rb」控制器中有「edit」和「update」方法。這兩種方法如何在不配置路由的情況下工作?

# GET /posts/1/edit 
    def edit 
    @post = Post.find(params[:id]) 
    end 

我找不到匹配/posts/[0-9]/edit模式的配置。

回答

3

在Rails 3.x中

match 'posts/hello' => 'posts#hello'

可在example.com/posts/hello

4

這會給你一個好頭開始的路線:http://guides.rubyonrails.org/routing.html

不是每你製作的方法會有自己的路徑,rails是建立在靜止原理上的,而你的腳手架在後控制器中創建了遵循這些路徑的方法,比如索引,顯示等......

你可以強制你的方法添加一個路由,但實際上你很少需要這樣做,因爲按照約定要容易得多。

5

您需要爲其添加路線到routes.rb。例如:

# Previous routes 
# resources :posts 

# Updated routes 
resources :posts do 
    get "hello", :on => :member 
end 

看看這個Rails guide about routing,它應該有助於你理解Rails路由。

1

當您使用腳手架生成帖子時,它會在您的routes.rb文件中添加一行resources :posts。該行爲所有生成的控制器操作配置路由。正如Caleb上面提到的,並非每一個行動都有一條專門的道路。單個路徑可以對應多個操作,因爲rails也會考慮HTTP方法。因此,例如,具有HTTP方法GET的路徑/posts對應於控制器動作index,而具有HTTP方法PUT的相同路徑對應於控制器動作update。從控制檯運行rake routes時,您可以看到這些關聯。我同意Jordan和Caleb的看法,Rails Guides是一個很好的閱讀,並且會幫助你理解路線。

+0

//謝謝你的回答! ROR如何通過閱讀一行代碼(資源:帖子)來配置路由? – Moon

+0

我沒有看過源代碼,看看Rails是如何做到的,但是當你使用'資源'時,Rails設置了7條路線。查看上述指南的第2.2節:http://guides.rubyonrails.org/routing.html – John

+0

我從來沒有找到比這個更好的路線基礎知識解釋:https://www.youtube.com/watch? v = g3SuV-A9bak&指數= 3&列表= PLAC08CE3187BC75F1 – Mauddev