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?
Können Sie erklären, 'fields_for' Block wird nie ausgewertet? – Pavan
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