Frage

Ich habe Probleme beim Generieren eines verschachtelten Modellformulars.

Hier sind meine Modelle:

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

Im Workout-Controller habe ich Folgendes für die neue Aktion:

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

Wenn ich jedoch im Formular „fields_for“ ausprobiere, erhalte ich nichts:

<% f.fields_for :scores do |builder| %>
    <p>
        <%= builder.label :score %><br />
        <%= builder.text_field :score %>
    </p>
<% end %>

Was mache ich falsch?

War es hilfreich?

Lösung

Es stellt sich in den Schienen 3 heraus, ich muss <%= Felder_FOR ...%> anstelle von <% Felder_FOR ...%>.

Andere Tipps

Versuchen Sie, Folgendes zu Ihrem hinzuzufügen Workout Modell:

attr_accessible :scores_attributes

accepts_nested_attributes_for :scores

Wenn Sie sicherstellen möchten, dass eine Partitur nur dann erstellt wird, wenn sie gültig ist, und dass sie durch die Beziehung zerstört werden kann, können Sie Folgendes erweitern:

attr_accessible :scores_attributes

accepts_nested_attributes_for :scores, reject_if: proc { |a| a[:field].blank? }, allow_destroy: true
validates_associated :scores

Einfach wechseln :field mit einem relevanten Feld, das für die Erstellung einer Partitur erforderlich ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top