【问题标题】:Rails - how to have all views in a controller be bound to routesRails - 如何将控制器中的所有视图绑定到路由
【发布时间】:2013-10-23 17:13:08
【问题描述】:

您好,我是 Rails 新手。我有一个名为 static_pages 的控制器,其中有不同的视图(酒店、咖啡馆、博物馆)。我目前正在 routes.rb 中执行此操作

match '/school',    to: 'static_pages#school',    via: 'get'
match '/hotel',    to: 'static_pages#hotel',    via: 'get'
match '/museum',   to: 'static_pages#museum',   via: 'get'
match '/peace', to: 'static_pages#peace', via: 'get'
match '/cafe',  to: 'static_pages#cafe',            via: 'get'
match '/investor',  to: 'static_pages#investor',            via: 'get'

我该如何做“如果在静态页面控制器中,将视图名称绑定到特定 URL”。删除这 6 行并将它们转换为 1 行的东西,它表示对于控制器中的每个方法,生成一个路由。

这里有什么特别的技巧吗?

【问题讨论】:

    标签: ruby-on-rails ruby


    【解决方案1】:

    routes.rb 是一个常规的 ruby​​ 文件,因此您可以执行类似于

    的操作
    ['school', 'hotel', 'museum', etc].each do |route|
      match route, to: "static_pages##{route}", via: 'get'
    end
    

    如果你想缩短它。

    编辑:

    如果你想获取所有方法而不是硬编码,你可以这样做:

    (ControllerName.methods - ActiveRecord::Base.methods).each do |route_sym|
      match route_sym.to_s, to: "static_pages##{route_sym.to_s}", via: 'get'
    end
    

    【讨论】:

    • 没关系,虽然我在考虑可读性。我可能会坚持正常的方式,但很高兴了解第二种解决方案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-26
    • 2013-01-16
    • 1970-01-01
    • 1970-01-01
    • 2014-01-15
    相关资源
    最近更新 更多