Rails为所有链接添加排序参数的最佳方法是什么?

时间:2013-08-06 11:38:18

标签: ruby-on-rails ruby-on-rails-3

如果存在,我需要将params sort添加到我的所有链接中。

我想到的解决方案:

  1. 使用link_to ..不方便,我觉得很难看。

    link_to 'Something', tag_url(tags, params.except(:controller, :action))

  2. 创建自定义链接助手

  3. Owerwrite link_to helper(尝试没有成功)

  4. 什么是最佳做法?

    更新

      def link_to_with_params(*args, &block)
        if block_given?
          options      = args.first || {}
          html_options = args.second
          link_to(capture(&block), options, html_options)
        else
          name         = args[0]
          options      = args[1] || {}
          html_options = args[2]
    
          html_options = convert_options_to_data_attributes(options, html_options)
          url = url_for(options) # Add params.except(:controller, :action)
    
          href = html_options['href']
          tag_options = tag_options(html_options)
    
          href_attr = "href=\"#{ERB::Util.html_escape(url))}\"" unless href
          "<a #{href_attr}#{tag_options}>#{ERB::Util.html_escape(name || url)}</a>".html_safe
        end
      end
    

    如何将params.except(:controller, :action)传递给上方助手的网址?

1 个答案:

答案 0 :(得分:1)

尝试以下

def link_to_with_params(params, name, options = {}, html_options = {})
  options.merge!(params.except(:controller, :action)) if params && params.respond_to?(:merge!)
  link_to(name, options, html_options)
end