我認爲這應該是一個簡單的問題。我想要將以下格式的URL路由到具有特定ID的特定控制器/操作對,例如:Rails路由:如何路由到特定的控制器/動作/ ID?
http://mywebsite.com/my_special_tag
。
http://mywebsite.com/user/post/13
(其中13是我想要傳入控制器/操作的ID)。
還要注意,我不想重定向,只想渲染。
有沒有一種簡單的方法來做到這一點在Rails 3?
謝謝!
我認爲這應該是一個簡單的問題。我想要將以下格式的URL路由到具有特定ID的特定控制器/操作對,例如:Rails路由:如何路由到特定的控制器/動作/ ID?
http://mywebsite.com/my_special_tag
。
http://mywebsite.com/user/post/13
(其中13是我想要傳入控制器/操作的ID)。
還要注意,我不想重定向,只想渲染。
有沒有一種簡單的方法來做到這一點在Rails 3?
謝謝!
你只需要一臺這樣的:
標籤表:
id | post_id | tag
-------------------
1 | 13 | my_special_tag
然後你需要一個before_filter
,這需要該代碼,並檢查數據庫的POST_ID。
你想也需要一個通配符路由看起來是這樣的:Rails 3.1 - in routes.rb, using the wildcard, match '*' is not catching any routes
開始與,然後讓我們知道,當你有更具體的問題,我們可以幫你更好。
假設明確你知道你希望有渲染到哪個URL,你可以明確地匹配到目標的路線:
# config/routes.rb
match 'my_special_tag' => 'user#post', :defaults => {:id => 13}
注意,這必然需要你有一個UserController
內的post
動作(請注意名稱爲單數,因爲它們在您所需的路徑中)。
如果你檢查你的路由,你應該得到用戶發佈路由的語法,如果你已經正確定義了嵌套路由。
別名的路線,你可以定義一個特定的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
什麼狀態這個?你有沒有找到解決這個問題的方法?如果是這樣,如果你發佈了你的問題的答案會有幫助。 – zeantsoi