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?

¿Fue útil?

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
scroll top