Question

J'ai un formulaire modèle imbriqué avec un à plusieurs entre une classe de projet et d'équipe de classe, et dans le contrôleur, une fonction de mise à jour comme:

@project = Project.find(params[:id])

@project.update_attributes(params[:project])        

Maintenant, je voudrais définir certains champs qui ne figurent pas sous la forme de quelques-uns des membres de l'équipe avant l'économie se produit. Je ne peux pas utiliser les update_attributes fonctionnent comme est de le faire.

Quelle serait la meilleure façon de le faire?

Merci, Nicolas.

Était-ce utile?

La solution

je regarderais dans la fonction accepts_nested_attributes_for. Vous pourriez avoir quelque chose comme:

class Project < ActiveRecord::Base
  has_one :team
  accepts_nested_attributes_for :team

  # also this will be useful
  validates_associated :team
end

Dans vos formulaires vous voulez utiliser la méthode fields_for pour nicher vos attributs. Cela pourrait ressembler à quelque chose comme:

<% 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 %>

Lorsque vous soumettez le formulaire que vous pourrez appeler @project.update_attributes(params[:project]) et cela fonctionnera. Vous pouvez également raise params.inspect de voir comment les params sont imbriqués.

Hope this helps.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top