【问题标题】:Rails 4 match all routes for one controllerRails 4 匹配一个控制器的所有路由
【发布时间】:2016-01-26 22:03:49
【问题描述】:

我有一个带有多个静态页面的控制器,理想情况下我希望使用通配符将它们全部路由。

是否可以做一些类似的事情?

get 'static/:action'

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 routes


    【解决方案1】:

    为什么不直接使用show 操作:

    #config/routes.rb
    resources :static, param: :page, only: :show #-> url.com/static/:page
    
    #app/controllers/static_controller.rb
    class StaticController < ApplicationController
       def show
          render "#{params[:page]}"
       end
    end
    

    这样,您可以直接通过链接传递“页面”,并由 Rails 处理:

     <%= link_to "About", static_path("page") %>
    

    【讨论】:

      【解决方案2】:

      您可能需要get 'static/:action', to: 'static#show' 之类的内容,然后在您的StaticController 显示操作中根据params[:action] 参数呈现正确的静态页面。

      请参阅http://guides.rubyonrails.org/routing.html#defining-defaults 了解更多信息。

      【讨论】:

      • 旧技术不再起作用了吗,例如:controller/:action 类型的东西?好久没试过了。
      • 是的,我想这是真的,尽管在这种情况下看起来并没有那么糟糕。
      【解决方案3】:

      你可以路由类似的东西

      get '*path', to: 'static#show'
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-30
        • 1970-01-01
        • 2013-11-05
        • 1970-01-01
        相关资源
        最近更新 更多