Pergunta

Eu tenho um formulário de modelo aninhado com um relacionamento um para muitos entre um projeto de classe e o membro da equipe de classe e, no controlador, uma função de atualização como:

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

@project.update_attributes(params[:project])        

Agora, eu gostaria de definir alguns campos que não estão definidos no formulário para alguns membros da equipe antes que a economia aconteça. Não posso usar a função update_attributes como é fazê -lo.

Qual seria a melhor maneira de fazer isso?

Obrigado, Nicolas.

Foi útil?

Solução

Eu olharia para o accepts_nested_attributes_for função. Você pode ter algo como:

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

  # also this will be useful
  validates_associated :team
end

Em suas formas, você deseja usar o fields_for Método para aninhar seus atributos. Isso pode parecer 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 %>

Quando você enviar o formulário, você poderá ligar @project.update_attributes(params[:project]) E vai funcionar. Você também pode raise params.inspect Para ver como os parâmetros estão aninhados.

Espero que isto ajude.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top