Rails路由:将特定的控制器操作设置为不同的路径

时间:2018-08-06 02:24:17

标签: ruby-on-rails routing ruby-on-rails-5

我希望将控制器的show动作设置为特定路径(没有控制器前缀的路径)。我知道可以通过控制器完成此操作

resources :items, path: ''

但是有办法只对控制器内的一个特定操作执行此操作吗?

我的最终目标是能够说出www.example.com/my-item-name并将用户带到该项目,而无需更改URL。我尝试使用全包式路由,但重定向将前缀添加回我不想要的前缀。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

您可以在routes.rb文件中指定哪个控制器和操作响应特定路由,如下所示:

get 'something', to: 'controller_name#action_name'

请参见Rails Routing Guide

答案 1 :(得分:0)

您可以使用matchgetpostput,宏手动定义单个路由:

get :bar, to: 'foos#bar'
get :bar, controller: 'foos' # works the same as above
post :bar, to: 'foos#bar'

如果您想更优雅地将多个路由路由到同一控制器,也可以使用scope

scope controller: 'foos' do
  get :bar
  get :baz
end