Вложенная форма модели и update_attributes
-
27-09-2019 - |
Вопрос
У меня есть форма вложенной модели с однозначным взаимосвязью между классовым проектом и Teas TeamMember, а также в контроллере, функция обновления, такая как:
@project = Project.find(params[:id])
@project.update_attributes(params[:project])
Теперь я хотел бы установить некоторые поля, которые не установлены в форме для некоторых членов команды до того, как произойдет сохранение. Я не могу использовать функцию update_attribute, как это сделать это.
Что было бы лучшим способом сделать это?
Спасибо, Николас.
Решение
Я бы посмотрел в 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
Чтобы увидеть, как параметры вложены.
Надеюсь это поможет.