如何使用helper中的unobustrive JS重构link_to_function?

时间:2013-03-15 10:07:57

标签: javascript ruby-on-rails ruby refactoring unobtrusive-javascript

我在link_to_function方法中使用ApplicationHelper

def link_to_add_fields(name, f, association)
  new_object = f.object.class.reflect_on_association(association).klass.new
  fields = f.fields_for(association, new_object, :child_index => "new_#{association}") do |builder|
    render(association.to_s + "_fields", :f => builder)
  end
  link_to_function(name, ("add_fields(this, '#{association}', '#{escape_javascript(fields)}')").html_safe)
end

由于它将在Rails 4中弃用,我想使用Unobustrive JS摆脱link_to_function。怎么做?

1 个答案:

答案 0 :(得分:0)

我知道这是一个古老的问题,但我很高兴能够使用与我完全相同的代码片段来运行这个问题...祝福你Ryan Bates和RailsCasts!

无论如何,事实证明这是一个非常简单的重构。您只需将该功能作为' onclick' link_to的参数:

link_to(name, '#', onclick: "add_fields(this, '#{association}', '#{escape_javascript(fields)}')")