Ich versuche verschachtelte Formen wie hier erwähnt zu tun. http://guides.rubyonrails.org/form_helpers.html#nested-formsverschachtelte Formulare Schienen Feld nicht aktualisiert
Das Ziel ist wie folgt: Ich habe mehrere Colli mit einem Kontrollkästchen, das überprüft werden kann. Die Kolli-Liste kann gelöscht oder geändert werden, aber die Überprüfungen und ihre Informationen müssen bleiben.
Modell
class Colli < ActiveRecord::Base
has_one :check, foreign_key: "subcontainerid", primary_key: "colliid"
accepts_nested_attributes_for :check, allow_destroy: true
end
class Check < ActiveRecord::Base
belongs_to :colli
end
ein Scheck So hat jeder Colli. Das Collid aus der Colli-Tabelle erstellte eine Verknüpfung mit der Prüftabelle, die die Subcontainer-ID verwendet.
-Controller
Im Colli Controller weiße Liste ich die check_attributes.
def colli_params
params.require(:colli).permit(:colliid, :collinaam, check_attributes: [:id, :checked])
end
Formular
sieht meine Form so.
<%= form_for(@colli) do |f| %>
<% if @colli.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@colli.errors.count, "error") %> prohibited this colli from being saved:</h2>
<ul>
<% @colli.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<%= f.fields_for :checks do |checks_f| %>
<p>check start</p>
<div class="field">
<%= checks_f.label :checked %><br>
<%= checks_f.check_box :checked %>
</div>
<% end %>
<div class="field">
<%= f.label :colliid %><br>
<%= f.text_field :colliid %>
</div>
<div class="field">
<%= f.label :collinaam %><br>
<%= f.text_field :collinaam %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
Wenn ich form_for: check Ich kann die Kontrollkästchen nicht sehen. Wenn ich form_for: checks sehe, sehe ich ein Kontrollkästchen, aber es funktioniert nicht. Beim Klicken auf abschicken sehe ich folgenden Fehler:
undefined method `checked' for nil:NilClass
<p>
<strong>Checked:</strong>
<%= @colli.check.checked %>
</p><p>
<strong>Collinaam:</strong>
<%= @colli.collinaam %>
Das bedeutet, es wurde nicht gespeichert. Weiß jemand, wie man das repariert?
Das ist nicht 'funktioniert nicht definierte Methode bauen für nil: NilClass' aber wenn ich ein' @ colli.build_check' in der Bearbeitungsaktion von der Steuerung tun es tut Arbeit. – Christoph