Предварительно загрузить поля fields_form с данными из базы данных

У меня есть форма для создания нескольких объектов в соответствии с руководствами Райана Бейтса по вложенным формам (#196 и #197). Моя форма выглядит так:

<%=form_for @group_poll, :remote => true do |f|%>
   <%=f.fields_for :questions do |builder| %>
      <%=render "group_polls/question_fields",  :f => builder%>    
   <%end%>
   <p><%= link_to_add_group_question "#{t(:addquestion)}", f, :questions%></p>
<%end%>

Партиал выглядит так:

<div class="row-fluid">
    <div class="span3"><%=f.label "#{t(:question)}:"%></div>
    <div class="span3"><%=f.text_field :admin_question, :required => true%></div>
    <div class="span1"><%=f.submit "#{t(:send)}", :name => "send_#{f.object.id}", :class=>"btn-white"%></div>
    <div class="span1"><%=f.submit "#{t(:save)}", :name => "save_#{f.object.id}", :class=>"btn-white"%></div>
</div>

Я хочу предварительно загрузить некоторые вопросы, которые существуют в БД, при доступе к странице в приложении, а также иметь возможность добавлять новые вопросы. В действии контроллера у меня есть @group_poll.questions.build() для каждого опроса. Он работает нормально для создания полей вопросов, но они пусты. Я не знаю, как предварительно загрузить эти опросы с данными в БД. Я попытался передать question объект @group_poll.questions.build(question), но мне не повезло. Я следовал этому ответу на вопрос SO, но я заблудился.

Возможно ли то, что я хочу сделать?


person itziki    schedule 24.04.2014    source источник


Ответы (1)


если вы хотите предварительно загрузить существующие вопросы в БД, вам не следует использовать build(), потому что он создает пустой объект.

Если убрать build(), это сработает?

@group_poll.questions
person roshiro    schedule 24.04.2014
comment
Я не смог заставить это работать, как вы сказали, но ваш ответ осветил меня, и я нашел решение :) - person itziki; 25.04.2014