Подтвердить что ты не робот

Rails fields_for form не отображается, вложенная форма

Я создал простой проект рельсов. Все работало нормально, пока я не попытался добавить новую модель Paintings, которая обрабатывает belongs_to, и Patient, что has_many Живопись через Обработку. Так что некоторая вложенная форма, которую я создал, не появляется, я считаю, что она связана с контроллером! Спасибо, и привет от Германии!

Контроллер обработки:

class TreatmentsController < ApplicationController
  def create
    @patient = Patient.find(params[:patient_id])
    @treatment = @patient.treatments.create(params[:treatment])
    redirect_to patient_path(@patient)
  end

  def destroy
    @patient = Patient.find(params[:patient_id])
    @treatment = @patient.treatments.find(params[:id])
    @treatment.destroy
    redirect_to patient_path(@patient)  
  end
end

И форма для лечения с nested fields_for, которая не отображается:

<%= form_for([@patient, @patient.treatments.build]) do |f| %>
  <div class="field">
    <%= f.label :content %>
    <%= f.text_area :content, :cols => "30", :rows => "10" %>
  </div>
  <div class="field">
    <%= f.label :category_id %>
    <%= f.collection_select :category_id, Category.find(:all), :id, :typ %>
  </div>

  <%= f.fields_for :paintings do |ff| %>
    <div class="field">
      <%= ff.label :name, 'Tag:' %>
      <%= ff.text_field :name %>
    </div>
  <% end %>

  <div class="field">
    <%= f.submit nil, :class => 'btn btn-small btn-primary' %>
  </div>
<% end %>

UPDATE:

Показать сайт:

<% @patient.treatments.each do |treatment| %>
  <tr>
    <td><%= treatment.category.try(:typ) %></td>
    <td><%= treatment.content %></td>
    <td><%= treatment.day %></td>
    <td><div class="arrow"></div></td>
  </tr>
  <tr>
4b9b3361

Ответ 1

Попробуйте

= f.fields_for :paintings, Painting.new do |p|

Ответ 2

Даже вопрос довольно старый, но вам не хватает new, который имеет решающее значение для этого вопроса. Методы destroy и create не имеют ничего с этой проблемой. Если у вас есть метод new, который выглядит примерно так:

class TreatmentsController < ApplicationController
  def new
    @patient = Patient.new
  end
end

Тогда решение должно было бы изменить метод new для "сборки" paintings следующим образом:

class TreatmentsController < ApplicationController
  def new
    @patient = Patient.new
    @patient.paintings.build
  end
end

Ответ 3

Попробуйте выполнить следующее в новом действии в контроллере

@patient.treatments.build

Завершите сборку build_association http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#method-i-belongs_to

Вы также должны прочитать о вложенных атрибутах. Используйте их для справки http://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.html