0

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

我想到的解决方案:

  1. 使用 link_to.. 不方便,我认为它很难看。

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

  2. 创建自定义链接助手

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

什么是最佳实践?

更新:

  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)到上面帮助程序中的 url?

4

1 回答 1

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
于 2013-08-06T12:40:45.660 回答