Вопрос

У меня есть форма, которую нужно отобразить для таблицы, которая связана с несколькими другими таблицами. Например, у меня есть таблица «случаев» (думаю, дело следователя), у которого есть заявитель has_one и клиент has_one.

Я хотел бы, чтобы в форме отображались поля, которые необходимо заполнить для данных случая, данных клиента и данных заявителя. Есть ли простой способ сделать это так, чтобы при его отправке это было бы так просто:

case = Case.new(params[:case])
case.save

Как было бы, если бы я просто отправлял и сохранял форму только для данных дела?

Это было полезно?

Решение

Похоже, вы ищете метод activerecord accepts_nested_attributes_for . Вам нужно будет создать свою форму, используя

- form.fields_for :claimant do |claimant_form|
  = claimant_form.text_field :name

Вы можете найти гораздо больше информации в Сообщение в блоге Райана Дейгла

Другие советы

Я не верю, что есть способ, которым вы можете просто вызвать case.save, и это сработает.

Чтобы создать форму, изучите использование fields_for. http://api.rubyonrails.org/classes/ActionView/Helpers/ FormHelper.html # M001605

fields_for позволяет вам добавлять поля, которые хранятся в разных переменных POST, поэтому, если вы правильно настроите поля, то в вашем новом методе вы можете сделать что-то вроде этого:

claimant = Claimant.new(params[:claimant])
claimant.save

Что не намного сложнее.

См. мои примеры сложных форм о создании вложенных мульти Модельные формы. Это было обновлено для работы с Rails 2.3 accepts_nested_attributes_for .

Это позволяет вам вкладывать ассоциации в params [: case] так, как вы хотите. Когда вы вызываете case.save , все остальное тоже будет сохранено.

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