0

我是 Ruby on Rails 的初学者,也是 Web 开发的初学者。我试图在 Railscasts ep 196 - 198 上学习 Neste 表单。在 javascript 和 helper 部分之前,我相当了解这一集。我仍然可以理解 javascript 中的“add_fields”函数,但是当他开始链接方法时,我就不知所措了。任何人都可以帮助和指导这个白痴吗?

application_jquery.js:

function remove_fields(link) {
  $(link).prev("input[type=hidden]").val("1");
  $(link).closest(".fields").hide();
}

function add_fields(link, association, content) {
  var new_id = new Date().getTime();
  var regexp = new RegExp("new_" + association, "g")
  $(link).parent().before(content.replace(regexp, new_id));
}

助手/application_helper.rb:

module ApplicationHelper
  def link_to_remove_fields(name, f)
    f.hidden_field(:_destroy) + link_to_function(name, "remove_fields(this)")
  end

  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.singularize + "_fields", :f => builder)
    end
    link_to_function(name, "add_fields(this, \"#{association}\", \"#{escape_javascript(fields)}\")")
  end
end

顺便说一句,如果有帮助,我正在使用 Rails 4。

4

1 回答 1

0

我遇到了完全相同的问题 - 我认为问题在于这需要为 rails4 重构。我已经想出了如何将其余代码更新到 rails 4(我已经在 railcast 讨论线程上发布了这个) - 但是这个 javascript 和帮助代码现在没有做任何事情,我们显然遗漏了一些东西。任何人的帮助将不胜感激!

编辑:我将代码更新为更新后的 railcast“403 Dynamic Forms”中给出的内容,并且它可以工作(它是专业演员)。

于 2013-10-23T16:03:37.493 回答