Rails Hash с несколькими атрибутами объекта. Как мне спасти их всех? - PullRequest
0 голосов
/ 07 февраля 2010

Я получаю хеш от fields_for, который выглядит следующим образом:

"affiliation_attributes"=>{
"11"=>{"volunteer_id"=>"14", "affiliationtype_id"=>"1", "organization_id"=>"1"},

"1"=>{"volunteer_id"=>"1", "affiliationtype_id"=>"3", "organization_id"=>"1"}, 

"4"=>{"volunteer_id"=>"2", "affiliationtype_id"=>"3", "organization_id"=>"1"}, 

"21"=>{"volunteer_id"=>"20", "affiliationtype_id"=>"1", "organization_id"=>"1"}

Первое число (например, 11) - это affiliationtype_id, а значения рядом с ним - его атрибуты.

Что я хочу сделать, это сохранить все эти типы принадлежности. Как я могу это сделать?

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 07 февраля 2010

Вам нужно "accept_nested_attributes_for".

Если вы делаете свои формы в обычном стиле, вам следует смотреть «Сложные формы» с 1 по 3 с railscasts.com, этот случай там рассматривается. http://railscasts.com/episodes/73-complex-forms-part-1 http://railscasts.com/episodes/74-complex-forms-part-2 http://railscasts.com/episodes/75-complex-forms-part-3

Или, если вы хотите пойти легким путем, используйте formtastic, и это решено для вас ;-) http://github.com/justinfrench/formtastic (читайте примеры с: for =>)

0 голосов
/ 07 февраля 2010

Ну, я нашел способ, но это временный взлом!

Я создал метод, который делает это:


 affiliation_attributes.each do |attributes|

      a = Affiliation.find_by_id(attributes[0])
      a.volunteer_id = attributes[1]["volunteer_id"]
      a.organization_id = attributes[1]["organization_id"]
      a.affiliationtype_id = attributes[1]["affiliationtype_id"]
      a.save

  end

Как я могу сделать это лучше? Спасибо.

...