我一直在研究Rails中的电影应用程序。我有一个演员的控制器/视图。当将params传递给actor控制器时,我希望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'
答案 0 :(得分:1)
我建议你使用friendly_id gem。它完全满足您的需求!
答案 1 :(得分:0)
您可以在./config/route.rb文件中使用以下内容:
get '/actors/:actor', to: 'actors#show'
答案 2 :(得分:0)
我将提供一系列重构建议如下:
然后,您现在可以将视图中的链接更改为:
<%= 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,并使用它执行任何操作。
答案 3 :(得分:0)
如果我是对的,你还是试着创建RESTful
路线。
所以我建议您在路线中使用Rails' resources
method:
Rails.application.routes.draw do
resources :actors # If you want only the :show action than add:
# , only: [:show]
end
这会自动为您创建合适的路线。
要将names
放入网址,您应该使用friendly_id gem。它有一个很棒的社区,并且经过了很好的测试。