嗨我已经走了虽然Railscast 196 & 197,并得到了一切工作,但我有一个关于扩展功能的问题。Rails演员#196 /#197嵌套模型代
在Railscast的结尾196 & 197(http://railscasts.com/episodes/197-nested-model-form-part-2)Ryan添加一个问题,然后单独添加答案。我试图实现的是添加问题时自动添加答案。
下面是该项目代码:http://railscasts.com/episodes/196-nested-model-form-revised(或更旧的版本,如果你没有订阅:http://railscasts.com/episodes/197-nested-model-form-part-2)
有一个在评论部分暗示该行child_object = f.object.class.reflect_on_association(association).klass.reflect_on_association(child_association).klass.new
加到帮手评论做到这一点,但是当我实现这个我得到的错误:
undefined method 'klass' for nil:NilClass
编辑:要清楚,它与这个错误试图建立child_object
时失败。 new_object
将生成并正确呈现。
我改变的辅助
def link_to_add_fields(name, f, association, container, child_association)
new_object = f.object.class.reflect_on_association(association).klass.new
child_object = f.object.class.reflect_on_association(association).klass.reflect_on_association(child_association).klass.new
new_object.answers = child_object
fields = f.fields_for(association, new_object, :child_index => "new_#{association}") do |builder|
render(association.to_s + "/" + association.to_s.singularize + "_fields", :f => builder)
end
link_to name, "#", class: "add-fields", data: { container: "#{container}", association: "#{association}", content: "#{fields}" }
end
电话帮手
= form_for @survey, :html => { :multipart => true } do |f|
%fieldset
%legend
Questions
#questions.nested
= f.fields_for :questions do |question|
= render 'questions/question_fields', :f => question
= link_to_add_fields "Add Question", f, :questions, "questions", :image
可能有关。 http://stackoverflow.com/questions/5746006/has-many-through-nested-form-that-can-build-multiple-instances – jdl
谢谢,我看了看,看来我的'link_to_add_fileds'在外面'fields_for'块。我提出了修改,显示了我的整个表单。 –