我正在尝试连接一个具有默认类'pjax'的自定义帮助程序,但也保留了在需要时添加类的功能。
示例:
link_to_pjax('pagename', page_path, :class => 'current')
因此,帮助器默认添加'pjax',以及类'current'或传入的任何内容。
def link_to_pjax(name, path, options = {:class => 'pjax'})
link_to(name, path, options)
end
语法吓坏了我。任何建议将不胜感激。
答案 0 :(得分:6)
def link_to_pjax(name, path, options)
options[:class] += ' pjax'
link_to(name, path, options)
end
修改强>
经过测试,它不那么优雅了:
def link_to_pjax(name, path, options = {})
options[:class] ? options[:class] += ' pjax' : options[:class] = 'pjax'
link_to(name, path, options)
end
我的第一个解决方案有效,但前提是您仍然指定了一个类。
最新作品适用于所有情况:
我的坏......
答案 1 :(得分:1)
def link_to_pjax(name, path, options={})
default_options = { :class => "pjax" }
link_to(name, path, options.merge(default_options))
end
答案 2 :(得分:0)
我改进了Delba的答案来处理link_to的块版本:
def link_to_pjax(*args, &block)
if block_given?
options = args.first || {}
html_options = args.second
link_to_pjax(capture(&block), options, html_options)
else
name = args[0]
options = args[1] || {}
html_options = args[2] || {}
html_options[:class] ? html_options[:class] += ' pjax' : html_options[:class] = 'pjax'
link_to(name, options, html_options)
end
end