簡體   English   中英

Rails路由:如何路由到特定的控制器/動作/ ID?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM