【问题标题】:Add default value into prefix to my routes generated by the *_path methods将默认值添加到 *_path 方法生成的路由的前缀中
【发布时间】:2010-11-17 06:25:43
【问题描述】:

我已将每个 map.resources 行的前缀值添加到我的路由文件中。所以这一切看起来像这样:

map.resources :subjects, :path_prefix => ':company'

我什至为默认行为添加了这一行

map.connect ':company/:controller/:action/:id'

这不是必需的(我相信),因为所有路由都是用资源方法处理的。

我在 ApplicationController 的 before_filter 方法中获取 :company 参数。一切正常。但是。

是否可以更改所有 *_path 方法的行为,默认情况下它会为所有生成的 url 设置公司值,并使用从 url 中获取的值?为了使其完美运行,我必须为每个 _path 方法添加公司价值作为参数。我相信可以让它自动化。

【问题讨论】:

    标签: ruby-on-rails ruby rest routes


    【解决方案1】:

    您应该覆盖应用程序控制器中的default_url_options

    class ApplicationController > ActionController::Base
    
      # ...
    
      def default_url_options(options)
        { :company => current_company.id }
      end
    
    end
    

    【讨论】:

    • 我得到错误的每个_path方法的参数数量错误(0代表1)
    • 除非您发布完整的异常回溯和您如何实现它的示例,否则我无法为您提供支持。另请注意, current_company.id 只是我为了完整起见而使用的一个示例。您应该根据需要调整代码。
    • 我已通过将 default_url_options(options) 更改为 default_url_options(options={}) 来修复参数数量错误。然而,关于论点还有其他问题。现在我必须指定 *_path(:id => @object),因为它总是期望第一个参数是 :company 对象。在这里讨论:rails.lighthouseapp.com/projects/8994/tickets/… 谢谢!
    猜你喜欢
    • 1970-01-01
    • 2017-06-09
    • 2020-05-17
    • 1970-01-01
    • 2019-01-21
    • 2011-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多