Llegar fields_for para trabajar con has_many relación
-
13-11-2019 - |
Pregunta
Estoy teniendo problemas para generar un modelo anidado forma.
Aquí están mis modelos:
class Workout < ActiveRecord::Base
has_many :scores
has_many :users, :through => :scores
accepts_nested_attributes_for :scores
end
class Score < ActiveRecord::Base
belongs_to :user
belongs_to :workout
end
class User < ActiveRecord::Base
has_many :scores
has_many :workout, :through => :scores
end
En el Entrenamiento del controlador, he aquí lo que tengo de la nueva acción:
def new
@workout = Workout.new
3.times { @workout.scores.build }
respond_to do |format|
format.html # new.html.erb
format.json { render json: @wod }
end
end
Sin embargo, en la forma, cuando trato de fields_for, yo no tengo nada:
<% f.fields_for :scores do |builder| %>
<p>
<%= builder.label :score %><br />
<%= builder.text_field :score %>
</p>
<% end %>
¿Qué estoy haciendo mal?
Solución
Resulta en rieles 3, necesito usar <%= fields_for ...%> en lugar de <% fields_for ...%>.
Otros consejos
Trate de añadir el siguiente a su Workout
modelo:
attr_accessible :scores_attributes
accepts_nested_attributes_for :scores
Si desea asegurarse de que los puntos no se construye menos es válida, y que pueden ser destruidos a través de la relación que se puede ampliar a:
attr_accessible :scores_attributes
accepts_nested_attributes_for :scores, reject_if: proc { |a| a[:field].blank? }, allow_destroy: true
validates_associated :scores
Solo tienes que cambiar :field
con un campo relevante que se requiere para una puntuación de ser creado.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow