tag rails form_for form fields_for example accepts_nested_attributes_for ruby-on-rails ruby ruby-on-rails-3

ruby-on-rails - form_for - rails nested forms



Rails fields_for forma no aparece, forma anidada (3)

He creado un proyecto de rieles simples. Todo funcionó bien hasta que intenté agregar un nuevo modelo de Paintings que belongs_to tratamiento y un Patient que tiene has_many pinturas durante el tratamiento. Entonces, de alguna manera, la forma anidada que creé no aparece, ¡creo que tiene que ver con el controlador! Gracias, y saludos desde Alemania!

Controlador de tratamientos:

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

Y el formulario para tratamientos con nested fields_for que no aparezca:

<%= 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 %>

ACTUALIZAR:

Mostrar Sitio:

<% @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>


Incluso la pregunta es bastante antigua, pero le falta el new que es crucial para esta pregunta. Los métodos de destroy y create no tienen nada con este problema. Si tienes un new método, que se parece a esto:

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

Entonces, la solución sería modificar el new método para "construir" las paintings esta manera:

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



Por favor, inténtalo

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