Создание форм для реляционных данных в Rails - PullRequest
0 голосов
/ 05 августа 2009

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

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

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

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

Ответы [ 3 ]

0 голосов
/ 05 августа 2009

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

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

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

0 голосов
/ 06 августа 2009

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

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

0 голосов
/ 05 августа 2009

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

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

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

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

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

...