2013-08-30 91 views
0

我認爲這應該是一個簡單的問題。我想要將以下格式的URL路由到具有特定ID的特定控制器/操作對,例如:Rails路由:如何路由到特定的控制器/動作/ ID?

http://mywebsite.com/my_special_tag 

http://mywebsite.com/user/post/13 

(其中13是我想要傳入控制器/操作的ID)。

還要注意,我不想重定向,只想渲染。

有沒有一種簡單的方法來做到這一點在Rails 3?

謝謝!

+0

什麼狀態這個?你有沒有找到解決這個問題的方法?如果是這樣,如果你發佈了你的問題的答案會有幫助。 – zeantsoi

回答

1

假設明確你知道你希望有渲染到哪個URL,你可以明確地匹配到目標的路線:

# config/routes.rb 
match 'my_special_tag' => 'user#post', :defaults => {:id => 13} 

注意,這必然需要你有一個UserController內的post動作(請注意名稱爲單數,因爲它們在您所需的路徑中)。

+0

我試過了,它不起作用。給我一個錯誤「未初始化的常量用戶」。 這是爲什麼? – ppd

+0

你可以驗證你的路徑確實是'user/post/13',而不是'users/posts/13'(或者其中的一些迭代)? – zeantsoi

+0

它仍然沒有工作。但這是什麼: 得到'my_special_tag',:controller =>'user',:action =>'post',:id =>'13' 不知道有什麼區別。 – ppd

0

如果你檢查你的路由,你應該得到用戶發佈路由的語法,如果你已經正確定義了嵌套路由。

別名的路線,你可以定義一個特定的ID爲特定的比賽,像這樣:

match '/special_tag' => 'posts#index', :defaults => { :id => '5' } 

更新

爲了澄清,上述應僅用於幾個特定您希望爲其設置路線的網頁。如果您想提供一個更方便用戶鏈接到每個用戶帖子頁面,我建議像https://github.com/norman/friendly_id,讓你有一個像

http://example.com/states/washington 

替代路線:

http://example.com/states/4323454