J'utilise relation polymorphes comme j'ai 3 modèles comme celui-ci:Rails emboîtées (simple_form_for) aide has_many belongs_to association
class Food < ActiveRecord::Base
has_many :images, as: :imageable, foreign_key: :imageable_uuid, dependent: :destroy
accepts_nested_attributes_for :images, :allow_destroy => true
end
class MenuPhoto < ActiveRecord::Base
has_one :image, as: :imageable, foreign_key: :imageable_uuid, dependent: :destroy
accepts_nested_attributes_for :image
end
class Image < ActiveRecord::Base
belongs_to :imageable, foreign_key: :imageable_uuid, :polymorphic => true
end
Donc, dans mon, je l'ai mis comme "sous forme de photos de menu" ceci:
= simple_form_for @menu_photo do |f|
= f.simple_fields_for :image_attributes do |d|
= d.input :photo, as: :file
= f.submit
Quand je soumets cette forme, il me donne comme ceci:
{"menu_photo"=>{
"image_attributes"=>
{"photo"=>"user image upload"}
}
}
il est exact. Donc, en "forme alimentaire" je fais la même chose:
= simple_form_for @food do |f|
= f.simple_fields_for :images_attributes do |d|
= d.input :photo, as: :file
= f.submit
Ce que j'attends:
{"food"=>{
"images_attributes"=>[
{"photo"=>"user image upload one"},
{"photo"=>"user image upload two"}
]}
}
Ce que je suis:
{"food"=>{
"images_attributes"=>
{"photo"=>"user image upload one"}
}
}
Cela me donne une erreur. Une solution à propos de celui-ci?
que voulez-vous dire 'pareil''? il a la même erreur? Si c'est le cas, affichez votre modèle et votre contrôleur pour plus d'informations. – Thanh
@KienThanh: C'est similaire. Je veux que "link_attributes" soit un tableau dans (has_many belongs_to association), mais à la place il me donne juste un simple hash (j'attends un tableau de hashes). c'est ce qui ne va pas. Oh, au fait, j'utilise une structure polymorphe. –
Non, l'association 'has_many' et' belongs_to' peut donner autant de hachage que vous le souhaitez (en fait, un tableau de hachage, comme vous le souhaitez). Cochez cette [Méthode de classe] (http://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.html). Exemple, vous voulez un aliment avec 2 photos, pourquoi vous obtenez une seule photo, parce que vous utilisez seulement 1 fois '@ food.photos.build', si vous en voulez plus, faites ceci:' n.times {@ food.photos .build} '. Vous pouvez voir ce [formulaire imbriqué] (http://railscasts.com/episodes/196-nested-model-form-part-1) pour plus d'informations. – Thanh