[英]Better routes in rails with params
我一直在Rails中開發電影應用程序。 我有演員的控制器/視圖。 當將參數傳遞給actors控制器時,我希望URL很漂亮。 現在看起來像這樣: http://localhost:3000/actors/show?actor=Hayley+Atwell
,我希望它看起來像/actors/show/Hayley+Atwell
或/actors/Hayley+Atwell
。
我該怎么做呢? 我在電影視圖中的鏈接是:
<%= link_to a.name, {:controller => 'actors', :action => 'show', :actor => a.name}, :class => "label label-default" %>
我的routes.rb現在像這樣:
get 'actors/show'
我建議您使用friendly_id gem。 它完全可以滿足您的需求!
您可以在./config/route.rb文件中使用以下命令:
get '/actors/:actor', to: 'actors#show'
我將給出一系列重構建議,如下所示:
然后,您現在可以將視圖中的鏈接更改為:
<%= link_to a.name, {:controller => 'actors', :action => 'show', :id => a.id}, :class => "label label-default" %>
注意:路線
:id
中的:
部分表示可以將其交換為任何內容,並且該位置出現的任何內容都將被解釋為id
。 因此,在/actors/show/7
,actor的ID為7,您現在可以在控制器動作中找到具有該id
的actor,並對其進行任何操作。
如果我是對的,那么無論如何,您都嘗試創建RESTful
路由。
因此,我建議您在路線中使用Rails的resources
方法 :
Rails.application.routes.draw do
resources :actors # If you want only the :show action than add:
# , only: [:show]
end
這會自動為您創建正確的路線。
要將names
放入URL中,應使用friendly_id gem 。 它有一個很棒的社區,並且經過了很好的測試。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.