我在rails中遇到了fields_for helper的问题。我有一个问题模型,有很多答案。 当我显示用户填写答案的表单时,我只想要一个文本区域来呈现特定问题。使用我当前的循环结构,它会为每个问题呈现3个文本区域。 (在我的例子中,他们是3个问题)。
好的代码:
<div class="row">
<div class="large-12 columns panel">
<%= form_for(@evaluation_form) do |f| %>
<%= render 'application/errors', f: f %>
<%= f.fields_for :questions do |question_form| %>
<p><%= question_form.object[:title] %></p>
<%= question_form.fields_for :evaluation_form_answers do |answer_form| %>
<%= answer_form.text_area :answer, value: question_form.object.evaluation_form_answers.where(["student_id = ? and evaluation_form_question_id = ?", "#{current_student.id}", "#{question_form.object[:id]}"]).first.answer %>
<%= answer_form.hidden_field :user_id, :value => current_user.id%>
<%end%>
<%end%>
<div class="actions">
<%= f.submit "Submit Evaluation Form" %>
</div>
<% end %>
</div>
</div>
我的控制器代码:
def answer
@evaluation_form.questions.each do |question|
question.evaluation_form_answers.build
end
end
涉及的模型之间的关系:
Question: has_many :evaluation_form_answers
accepts_nested_attributes_for :evaluation_form_answers, allow_destroy: true
EvaluationFormAnswer : belongs_to :evaluation_form_question
问题的屏幕截图:
答案 0 :(得分:1)
试试这个。
控制器
def answer
@evaluation_form.questions.each do |question|
@answer_form = question.evaluation_form_answers.build
end
end
查看
<%= question_form.fields_for :evaluation_form_answers, @answer_form do |answer_form| %>
答案 1 :(得分:-1)
检查此railscasts剧集Rails Casts Nested Model Form episode 196