вложенная модель формы и update_attributes - PullRequest
1 голос
/ 04 октября 2010

У меня есть форма вложенной модели с отношением один-ко-многим между классом Project и классом TeamMember, а в контроллере функция обновления, такая как:

@project = Project.find(params[:id])</p> <pre><code>@project.update_attributes(params[:project])

Теперь я хотел бы установить некоторые поля, которые не заданы в форме для некоторых членов команды, до того, как произойдет сохранение.Я не могу использовать функцию update_attributes как есть.

Как лучше всего это сделать?

Спасибо, Николас.

1 Ответ

1 голос
/ 07 октября 2010

Я бы посмотрел на функцию accepts_nested_attributes_for. У вас может быть что-то вроде:

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

  # also this will be useful
  validates_associated :team
end

В ваших формах вы захотите использовать метод fields_for для вложения ваших атрибутов. Это может выглядеть примерно так:

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

Когда вы отправите форму, вы сможете позвонить @project.update_attributes(params[:project]), и она будет работать. Вы также можете raise params.inspect посмотреть, как вкладываются параметры.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...