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.

War es hilfreich?

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.

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