Вопрос

У меня есть форма вложенной модели с однозначным взаимосвязью между классовым проектом и 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 Чтобы увидеть, как параметры вложены.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top