![](/img/trans.png)
[英]Rails 3 routing. How to create /controller/id/action routing format for specific action taking place?
[英]Rails Routing: How to route to a specific controller/action/id?
我認為這應該是一個簡單的問題。 我想路由以下形式的URL:
http://mywebsite.com/my_special_tag
到具有特定ID的特定控制器/操作對,例如
http://mywebsite.com/user/post/13
(其中13是我要傳遞給控制器/操作的ID)。
還要注意,我不想重定向,只想渲染。
在Rails 3中有一種簡單的方法嗎?
謝謝!
假設您明確知道要呈現給哪個URL,則可以在路由中明確匹配目標:
# config/routes.rb
match 'my_special_tag' => 'user#post', :defaults => {:id => 13}
請注意,這必然要求您在UserController
具有post
操作(請注意,名稱在您所需的路徑中是單數 )。
您只需要一個這樣的表:
標簽表:
id | post_id | tag
-------------------
1 | 13 | my_special_tag
然后,您需要一個before_filter
,它帶有該標記並檢查數據庫中的post_id。
您還需要一個看起來像這樣的通配符路由: Rails 3.1-在routes.rb中,使用通配符匹配“ *”不會捕獲任何路由
首先,然后在您有其他具體問題時告訴我們,我們會為您提供更好的幫助。
如果檢查了路線,並且正確定義了嵌套路線,則應該獲得用戶發布路線的語法。
要為路由添加別名,您可以為特定匹配定義特定的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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.