我只需要显示四个options
至questions
。目前,我将代码重复四次。我相信,有更好的方法可以做到这一点。你能告诉我如何吗?
表格
<%= form_for @question do |form| %>
<div class="field">
<%= form.label :body %>
<%= form.text_area :body %>
</div>
<%= form.fields_for :options, question.options.build do |a| %>
<div class="field">
<%= a.label :options %>
<%= a.text_area :body %>
<%= a.check_box :is_answer, checked: true %>
</div>
<% end %>
<%= form.fields_for :options, question.options.build do |a| %>
<div class="field">
<%= a.label :options %>
<%= a.text_area :body %>
<%= a.check_box :is_answer, checked: true %>
</div>
<% end %>
<%= form.fields_for :options, question.options.build do |a| %>
<div class="field">
<%= a.label :options %>
<%= a.text_area :body %>
<%= a.check_box :is_answer, checked: true %>
</div>
<% end %>
<%= form.fields_for :options, question.options.build do |a| %>
<div class="field">
<%= a.label :options %>
<%= a.text_area :body %>
<%= a.check_box :is_answer, checked: true %>
</div>
<% end %>
<div class="actions">
<%= form.submit %>
</div>
<% end %>
在这里,我将重复:options
的代码块四次。如何在一个块中完成?
答案 0 :(得分:0)
您可以在控制器中做
def create
@question = Question.new
4.times { @question.options.build }
end
然后在您看来
<%= form_for @question do |form| %>
<div class="field">
<%= form.label :body %>
<%= form.text_area :body %>
</div>
<%= form.fields_for :options, question.options.build do |a| %>
<div class="field">
<%= a.label :options %>
<%= a.text_area :body %>
<%= a.check_box :is_answer, checked: true %>
</div>
<% end %>
<% end %>
该应该为您构建4个嵌套字段,因此您不必重复多次代码:D