代码之家  ›  专栏  ›  技术社区  ›  Damien MATHIEU

Rails资源生成的url方法和参数

  •  0
  • Damien MATHIEU  · 技术社区  · 16 年前

    我有一些rails资源,这些资源具有与:id-one互补的参数。 例如:

    map.resources :users, :controller => 'users', :path_prefix => ':lang'
    

    这样我就可以在URL前面加上lang前缀。
    默认生成的url方法为:

    user_url(lang, user)
    

    因此,我将寻找一种干净的方法来定义这个lang参数,而无需将它传递到user_url方法参数中。
    到目前为止,我一直在使用助手。但重新定义所有这些方法并不是很干净。并且当用户url方法应为空时,帮助程序在控制器中无效。

    然而,我发现rspec有一个问题。尽管我包含了库,但使用的方法是rails默认生成的方法。

    你知道我怎么才能弄清楚吗P

    2 回复  |  直到 16 年前
        1
  •  1
  •   alex.zherdev    16 年前

    您可以尝试使用别名\u方法\u链(Yehuda可能会说这是滥用:)。将参数值添加到选项中,然后调用原始方法。

        2
  •  1
  •   James A. Rosen    16 年前

    module UserWithLanguageSupport
      def user_url(user, options = {})
        url_for options.reverse_merge({
                  :id => @user,
                  :lang => params.fetch(:lang, @user.lang)
                })
      end
    end
    
    class MyController < ActionController::Base
    
      include UserWithLanguageSupport
      helper :all, UserWithLanguageSupport
    
    end