On Monday 30 January 2012 12:21 PM, Bo Zhao wrote:
I have a scenario that my user need to upload a image first and then assign to another model, so I used a generic model, to upload the file first. But I always get a exception of ActiveRecord::UnknownAttributeError (unknown attribute: utf8). because rails automatically adds a utf-8 field for the form submit.model: <code> class AttachedImage< ActiveRecord::Base belongs_to :attachable, :polymorphic => true has_attached_file :image end </code> migration: <code> class CreateAttachedImages< ActiveRecord::Migration def change create_table :attached_images do |t| t.string :image_file_name t.string :image_content_type t.integer :image_file_size t.datetime :image_updated_at t.references :attachable, :polymorphic => true t.timestamps end end end </code> And the controller: <code> class AttachedImagesController< ApplicationController def create @attched_image = AttachedImage.new(params) respond_to do |format| if @attched_image.save format.js else format.js end end end end </code> the view part: <code> <div id="upload-image-dialog"> <%= form_tag(@attached_image, :method => "POST", :remote => true, :html => { :multipart => true }) do %> <%= file_field_tag :image %> <%= submit_tag("submit") %> <% end %> <h1 style="display:none">Successfully Uploaded.</h1> </div> </code> it's quite straight forward, but every time I submit this form, I will get an exception of the utf8 field added automatically by rails. ActiveRecord::UnknownAttributeError (unknown attribute: utf8): app/controllers/attached_images_controller.rb:5:in `new' app/controllers/attached_images_controller.rb:5:in `create' I could not understand that, this shall not be a problem right? We are writing @model = Model.new(params) everyday, hope someone could help me out and explain what's going on under the hood, thanks!
change in the controller @attched_image = AttachedImage.new(params) to @attched_image = AttachedImage.new(params[:attached_image]) if above not working because of form_tag usage then you have to use custom new like @attched_image = AttachedImage.new(:image=>params[:image]) this should work. -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.

