【问题标题】:Rails best way to add a sort param to all links?Rails向所有链接添加排序参数的最佳方法?
【发布时间】:2013-08-07 09:35:19
【问题描述】:

如果存在,我需要将参数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?

【问题讨论】:

  • 我认为第二个选项要好得多
  • @Salil - 好的,我已经复制了 link_to 辅助方法并重命名了,如何在辅助方法中添加参数?我已经更新了我的问题。

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


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-16
    • 1970-01-01
    • 1970-01-01
    • 2021-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-03
    相关资源
    最近更新 更多