I am using jQuery fileupload plugin to upload multiple pictures. Inspect the data sent to the server, it was:
Parameters: {"utf8"=>"✓", "authenticity_token"=>"pE6KRzQv05wwcutCRN0UlZ3Cy39cNAtEYCMbkoVtwBQ=", "poll"=>{"title"=>"fjijgg", "category"=>"1", "items_attributes"=>{"brand"=>"item 3", "photo"=>[#<ActionDispatch::Http::UploadedFile:0x007fe609c377a0 @original_filename="Photo Nov 20, 1 19 44 AM.jpg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"poll[items_attributes[photo]][]\"; filename=\"Photo Nov 20, 1 19 44 AM.jpg\"\r\nContent-Type: image/jpeg\r\n", @tempfile=#<File:/var/folders/3s/xggrbr6119v_mtcqn9r0b6tr0000gn/T/RackMultipart20121120-1465-d21tys>>]}}}
The poll and item models set up as:
class Item < ActiveRecord::Base
attr_accessible :photo, :photo_url, :poll_id, :brand, :number_of_votes,:description, :is_deleted
has_attached_file :photo,
:styles => { :thumbnail => "100x100#",
:small => "150x150>",
:medium => "250x250>",
:large => "400x400>" },
:storage => :s3,
:s3_credentials => S3_CREDENTIALS,
:url=>"/item_:id/created_at_:created_at/:style.jpg"
belongs_to :poll
end
class Poll < ActiveRecord::Base
attr_accessible :title, :user_id, :category, :items_attributes
belongs_to :user
has_many :items, :dependent => :destroy
accepts_nested_attributes_for :items
default_scope :order => 'polls.created_at DESC'
end
And the poll controller:
class PollsController < ApplicationController
def create
@poll=Poll.create(params[:poll])
redirect_to @poll
end
end
I got the error:
TypeError (can't convert Symbol into Integer):
I thought it was caused by “items_attributes” => {…}.Any suggestions about how to fix it?
Thanks
I figured out that since it’s a one to many association, i.e, poll has many items, it should look like “items_attributes” => [{..}] rather than “items_attributes” => {..}