2016-04-13 20 views
0

Ich habe auch Probleme mit verschachtelten Formen und Rails 4 (das scheint leider recht häufig zu sein). Ich Ereignisse haben, die Anforderungen haben, die Modelle sind:Verschachtelte Formulare in Rails 4 und die fields_for Methode

class Event < ActiveRecord::Base 
    enum type: [:lecture, :exercise, :tutorial] 

    has_one :requirement, dependent: :destroy 

    #accepts_nested_attributes_for :requirement 
end 

und

class Requirement < ActiveRecord::Base 
    belongs_to :event 
end 

Es ist im Wesentlichen eine Eins-zu-Eins-Entsprechung zwischen diesen beiden. Jetzt möchte ich ein neues Ereignis zusammen mit der zugehörigen Anforderung erstellen. Ich verwende die folgende Form:

<div class="container"> 
    <%= form_for(@event) do |f| %> 
    <% if @event.errors.any? %> 
    <div id="error_explanation"> 
    <h2><%= pluralize(@event.errors.count, "error") %> prohibited this event from being saved:</h2> 

    <ul> 
     <% @event.errors.full_messages.each do |message| %> 
     <li><%= message %></li> 
     <% end %> 
    </ul> 
    </div> 
    <% end %> 

    <div class="container"> 
    <%= f.select :type, Event.types.map { |key, value| [key.humanize, key] }%> 
    <%= f.text_field :number, placeholder: "1298035" %> 

    <% f.fields_for :requirement, @event.requirement do |fields| %> 
     <%= fields.check_box :beamer %><br /> 
    <% end %> 

    <%= f.submit %> 
    </div> 
    <% end %> 
</div> 

Wie Sie sehen Ich möchte eine Checkbox haben, der angibt, ob ein Beamer benötigt wird. Das Problem ist, dass der fields_for Block nie ausgewertet wird. Ähnlich wie diese Beiträge:

Rails 3: fields_for showing blank filed on Edit view

Helper "fields_for" not working

Soweit ich die Objekte korrekt erstellt werden kann sagen:

# GET /events/new 
    def new 
     @event = Event.new 
     @event.build_requirement 
    end 

Wenn ich puts verwende ich sehe, dass beide Objekte nicht gleich Null sind und dass die Assoziationen korrekt sind.

Ich bin irgendwie neu zu Schienen und ich muss sagen, dass ich behindert bin. Irgendwelche Ideen?

+0

Können Sie erklären, 'fields_for' Block wird nie ausgewertet? – Pavan

+0

Nun, das Kontrollkästchen wird nicht gerendert. Wenn ich andere einfache Tags hinzufüge, werden sie auch nicht gerendert. Wenn ich auf nicht existierende Etiketten referenziere, wird kein Fehler erzeugt. – hfhc2

Antwort

2

Sie sollten uncommentaccepts_nested_attributes_for :requirement im Event Modell.

Update:

Sie sollten auch = im fields_for.

<%= f.fields_for :requirement, @event.requirement do |fields| %> 
+0

Nun, ich habe es versucht. Leider keine Wirkung ... – hfhc2

+0

@ hfhc2 Überprüfen Sie mein Update. – Pavan

+1

Thx :) Ich schätze die Hilfe sehr. – hfhc2

Verwandte Themen