Pregunta

Tengo una forma anidada-modelo con una relación de uno a muchos entre una clase de proyectos y TeamMember clase, y en el controlador, una función de actualización como:

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

@project.update_attributes(params[:project])        

Ahora, me gustaría definir algunos campos que no estén establecidos en la forma de algunos de los miembros del equipo antes de que ocurra el ahorro. No puedo usar la función de los update_attributes como es hacerlo.

¿Cuál sería la mejor manera de hacerlo?

Gracias, Nicolas.

¿Fue útil?

Solución

Me gustaría ver en la función accepts_nested_attributes_for. Es posible que tenga algo como:

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

  # also this will be useful
  validates_associated :team
end

En los formularios que tendrá que usar el método fields_for para anidar sus atributos. Eso podría ser algo como:

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

Al enviar el formulario usted será capaz de llamar @project.update_attributes(params[:project]) y funcionará. También puede raise params.inspect para ver cómo se anidan los parametros.

Espero que esto ayude.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top