2013-06-12 2 views
3

Essayant d'enregistrer quelques images dans mon formulaire de produit. J'excite des paremètres où j'aurais des images_attributs faisant partie de "produit". Quand je fais des paramètres comme ça dans la console et que je crée un produit, les images sont réellement sauvegardées.Rails 3.2 has_many: comme polymorphique, Simple Form, simple_fields_for

class Product < ActiveRecord::Base 
    extend FriendlyId 
    friendly_id :name, use: :slugged 

    attr_accessible :description, :name, :category_ids, :brand_ids, :image_ids, :images_attributes 

    has_many :images, :as => :imageable 

    accepts_nested_attributes_for :images 
end 

class Image < ActiveRecord::Base 
    belongs_to :imageable, :polymorphic => true 
    attr_accessible :name, :file 
    mount_uploader :file, ImageUploader 
end 

= simple_form_for(@product, :html => {:multipart => true}) do |f| 
    = f.error_notification 

    .form-inputs 
     = f.input :name 
     = f.input :description 

     = f.association :categories, as: :check_boxes 
     = f.association :brands, as: :check_boxes 

     = f.association :images 

     = simple_fields_for :images do |i| 
      = i.input :file, as: :file 
      = i.input :name 

    .form-actions 
     = f.button :submit 


# GET /products/new 
# GET /products/new.json 
def new 
    @product = Product.new 
    @product.images.build 

    respond_to do |format| 
     format.html # new.html.erb 
     format.json { render json: @product } 
    end 
end 

{ 
    "utf8"=>"✓", 
    "authenticity_token"=>"vvXZFh9sJivA3i4Y0rx9i/oqLwKByrExgYisfdj/N78=", 
    "product"=> { 
     "name"=>"sxsad", 
     "description"=>"saasd", 
     "category_ids"=>[""], 
     "brand_ids"=>[""], 
     "image_ids"=>[""] 
    }, 

    # should be images_attributes and come straight after image_ids? 
    "images"=>{ 
     "name"=>"sdfsdfsdf" 
    }, 

    "commit"=>"Create Product" 
} 

Une fois que je l'ai eu travailler pour une image, je vais regarder quelque chose comme Cocoon pour plusieurs images. Toute idée d'où cela pourrait aller mal serait grandement appréciée :).

Répondre

2

Vous devez simplement écrire:

= f.simple_fields_for :images do |i| 
+0

Aïe. C'était une faute de frappe. Merci tas, fonctionne comme prévu maintenant! – johan

+0

content que j'aurais pu aider! –

Questions connexes