Обновление нескольких записей за одну отправку?- Рельсы 3 - PullRequest
0 голосов
/ 23 ноября 2011

Я новичок в рельсах, и у меня возникли некоторые трудности ...

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

Это то, что я имею до сих пор:

Вид:

- @people.each do |p|
  %tr
    %td
      %input{:type => "hidden", :name => "person_id[]", :value => p.id}
      %input{:name => "firstname[]", :value => p.firstname}
    %td
      %input{:name => "lastname[]", :value => p.lastname}

Пример параметров, отправляемых на контроллер:

"person_id"=>["12", "13", "14"], 
"firstname"=>["john", "joe", "mary"], 
"lastname"=>["smith", "bloggs", "jane"],

В этот момент мне страшно, потому что я больше не привязан к активной записи. Вместо этого я чувствую, что хочу написать какой-то беспорядочный код для цикла по массиву person_id, чтобы увидеть, что изменилось, и записать все изменения обратно.

Это плохо, потому что я должен явно сравнивать каждое поле, даже если что-то не получается из-за ошибки проверки на полпути, как мне откатить любые изменения и показать сообщения пользователю?

Я надеюсь, что из-за незнания моих рельсов весь этот подход неверен, и мне не хватает хитрости. У кого-нибудь есть предложения как подойти к этой проблеме?

1 Ответ

0 голосов
/ 23 ноября 2011

Я полагаю, у вас есть ассоциация , настроенная между people model и person model, просмотрев скрытое поле person_id в вашем коде просмотра.
Если ваши ассоциации установлены правильно, используйте

accepts_nested_attributes_for

и следуйте указаниям Rails для основ ассоциации .
На данный момент яможет помочь вам только в этом, поскольку в вашем вопросе предоставлено не так много информации.

...