我正在尝试构建嵌套表单,但是嵌套的question_fields形式不会在浏览器中呈现。该表单有一个名为answers的嵌套表单,也没有呈现
这是嵌套表单_createpoll.html.haml
= form_for Poll.new, :class=>'create-poll-form', :remote => true do |f|
= f.text_field :title, :autofocus => true, :placeholder => "Poll Title"
= f.text_field :description, :placeholder => 'Description'
/ Required accepts_nested_attributes_for :questions in the polls model.
= f.fields_for :questions do |builder|
= render "questions/question_fields", :f => builder
= f.submit "Create Poll", :class => 'btn btn-danger'
这是_questions_fields.html.haml:
%p
= f.label :content, "Question"
= f.text_area :content
= f.check_box :_destroy
= f.label :_destroy, "Remove Question"
%p
= f.fields_for :answers do |builder|
= render "answers/answer_fields", :f => builder
这是相关的民意调查控制器,新建和创建动作
def create
@poll = Poll.create(params[:poll])
end
def new
@poll = Poll.new
1.times do
question = @poll.questions.build
2.times {question.answers.build}
end
end
有关为何可能无法渲染的任何想法?提前感谢您的提示!!
更新,新问题
在创建带有相关问题和答案的民意调查后,查询数据库后,我发现外键未持久存在且关联丢失。我必须以某种方式使用隐藏字段吗?
答案 0 :(得分:1)
愚蠢的疏忽。 Poll.new必须是@poll ......哎呀。
更新答案。
此表单由用户仪表板上的按钮“创建投票”呈现,通过控制器的新操作进行路由。
当控制器的新动作实例化新轮询时,我在form for
中实例化另一个轮询时是多余的。通过将其切换到新创建的实例变量@poll
,可以呈现表单。此外,:content
提出了无方法错误,但这是因为它不在问题或答案模型的attr_accessible
中。