В моем приложении Ruby on Rails я хочу разрешить добавление / редактирование вложенной модели, которая сама имеет связанную модель.
model Survey
string title
has_many questions
model Question
string question
belongs_to category
model Category
string name
Ради аргумента давайте предположим, что пользователь всегда должен вводить новую категорию при вводе вопроса (я не мог придумать лучшего примера, вздох).
В моей модели / survey / edit.html.erb у меня есть рабочая установка для добавления вопросов и их сохранения. Однако, когда я добавил модель Category
к изображению, я столкнулся с проблемой, что при добавлении нового Question
не отображается соответствующее поле имени Category
. Я подозреваю, что это потому, что, хотя я вызываю Question.new, я не вызываю question.category.build - и я не знаю, где и как это сделать.
Мой edit.html.erb:
<h1>Editing Survey</h1>
<%= render :partial => 'form' %>
Мой _form.html.erb:
<% form_for(@survey) do |f| %>
<%= f.error_messages %>
<p>
<%= f.label :title %><br />
<%= f.text_field :title %>
</p>
<div id="questions">
<% f.fields_for :questions do |q| %>
<%= render :partial => 'question', :locals => { :pf => q } %>
<% end %>
</div>
<%= add_a_new_child_link("New question", f, :questions) %>
<% end %>
Мой _question.html.erb:
<div class="question">
<%= pf.label :question %>
<%= pf.text_field :question %>
<% pf.fields_for :category do |c| %>
<p>
<%= c.label :name, "Category:" %>
<%= c.text_field :name %>
</p>
<% end %>
</div>