Если вы видели railscasts на вложенных формах, это вспомогательный метод для динамического создания ссылок. Тем не менее, после того, как я обновился до ruby 1.9.2 и rails 3, это не сработало, и теперь я понимаю, почему.
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, h("add_fields(this, \"#{association}\", \"#{escape_javascript(fields)}\")"))
end
вот код JavaScript
function add_fields(link, association, content) {
var new_id = new Date().getTime();
var regexp = new RegExp("new_" + association, "g")
$(link).up().insert({
before: content.replace(regexp, new_id)
});
}
Когда я просматриваю исходный код, ссылка отображается так:
<p><a href="#" onclick="add_fields(this, "dimensions", ""); return false;">Add Dimension</a></p>
, поэтому ""
не является правильной информацией для создания нового шаблона, и что-то происходит с тем, как устанавливается строка для полей. такие как fields= f.fields_for