Лучший способ отображения вложенных атрибутов в форме Rails - PullRequest
0 голосов
/ 03 мая 2019

Мне нужно отобразить только четыре 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 четыре раза.Как я могу сделать это в одном блоке?

1 Ответ

0 голосов
/ 03 мая 2019

В вашем контроллере вы могли бы сделать

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...