nested Modellform und update_attributes
-
27-09-2019 - |
Frage
Ich habe eine verschachtelte-Modellform mit einer Eins-zu-viele-Beziehung zwischen einem Klasse-Projekt und Klasse Teammitglied und in der Steuerung, eine Update-Funktion wie:
@project = Project.find(params[:id])
@project.update_attributes(params[:project])
Nun würde Ich mag einige Felder setzen, die nicht für einige der Teammitglieder in Form eingestellt werden, bevor das Speichern geschieht. Ich kann nicht die update_attributes-Funktion verwenden, wie dies zu tun ist.
Was wäre der beste Weg, es zu tun?
Danke, Nicolas.
Lösung
Ich würde die accepts_nested_attributes_for
Funktion suchen. Sie könnte so etwas wie haben:
class Project < ActiveRecord::Base
has_one :team
accepts_nested_attributes_for :team
# also this will be useful
validates_associated :team
end
Ihre Formulare werden Sie die fields_for
Methode Nest Ihre Attribute verwenden. Das aussehen könnte so etwas wie:
<% form_for(@project) do |p| %>
<%= p.error_messages %>
<!-- Project name -->
<%= p.text_field :name %>
<% f.fields_for(@project.team) do |t| %>
<!-- Team Name -->
<%= t.text_field :name %>
<% end %>
<%= f.submit 'Create Project' %>
<% end %>
Wenn Sie das Formular absenden können Sie @project.update_attributes(params[:project])
anrufen und es wird funktionieren. Sie können auch raise params.inspect
zu sehen, wie die params verschachtelt sind.
Hope, das hilft.