【问题标题】:Rails Routing: Set specific controller action to a different pathRails 路由:将特定的控制器操作设置为不同的路径
【发布时间】:2019-01-12 22:52:36
【问题描述】:

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

resources :items, path: ''

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

我的最终目标是能够说 www.example.com/my-item-name 并在不更改 URL 的情况下将用户带到该项目。我尝试使用包罗万象的路线,但重定向会添加我不想要的前缀。

有什么想法吗?

【问题讨论】:

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


    【解决方案1】:

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

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

    见Rails Routing Guide。

    【讨论】:

      【解决方案2】:

      您可以使用match、get、post、put 宏手动定义单个路由:

      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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-19
        相关资源
        最近更新 更多