获取嵌套表单以进行渲染

时间:2013-06-06 01:16:37

标签: ruby-on-rails forms nested-forms

我正在尝试构建嵌套表单,但是嵌套的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

有关为何可能无法渲染的任何想法?提前感谢您的提示!!

更新,新问题

在创建带有相关问题和答案的民意调查后,查询数据库后,我发现外键未持久存在且关联丢失。我必须以某种方式使用隐藏字段吗?

1 个答案:

答案 0 :(得分:1)

愚蠢的疏忽。 Poll.new必须是@poll ......哎呀。

更新答案。

此表单由用户仪表板上的按钮“创建投票”呈现,通过控制器的新操作进行路由。

当控制器的新动作实例化新轮询时,我在form for中实例化另一个轮询时是多余的。通过将其切换到新创建的实例变量@poll,可以呈现表单。此外,:content提出了无方法错误,但这是因为它不在问题或答案模型的attr_accessible中。