Attachment_fu and nested model forms

Has anyone successfully used attachment_fu with rails 2.3 nested model
forms?

I’ve never used attachment_fu before so I may be doing something wrong
there not sure. Here’s what I’ve got:

class Product < ActiveRecord::Base
has_one :cover_image
accepts_nested_attributes_for :cover_image, :allow_destroy => true
end

class CoverImage < ActiveRecord::Base
has_attachment :content_type => :image,
:storage => :file_system,
:path_prefix => 'public/images/covers
end

standard rest controller action:
def create
@product = Product.new(params[:product])

respond_to do |format|
  if @product.save
    flash[:notice] = 'Product was successfully created.'
    format.html { redirect_to(@product) }
    format.xml  { render :xml => @product, :status

=> :created, :location => @product }
else
format.html { render :action => “new” }
format.xml { render :xml => @product.errors, :status
=> :unprocessable_entity }
end
end
end

and the new form:

<% form_for(:product, :url => products_path, :html => { :multipart =>
true }) do |f| %>


<% f.fields_for(:cover_image) do |c| %>
<%= c.file_field :uploaded_data %>
<% end %>


<% end %>

On submitting the form I get this error:
ActiveRecord::AssociationTypeMismatch (CoverImage(#70223327600060)
expected, got HashWithIndifferentAccess(#70223341431440)):

Any thoughts greatly appreciated!
Tim

On Thu, Feb 26, 2009 at 9:35 PM, Tim [email protected] wrote:

Has anyone successfully used attachment_fu with rails 2.3 nested model
forms?

Yes.

                       :storage          => :file_system,
                       :path_prefix    => 'public/images/covers

end

Maybe you just omitted this, but I think your CoverImage should declare
belongs_to :product

standard rest controller action:

   format.html { render :action => "new" }



<% f.fields_for(:cover_image) do |c| %>
<%= c.file_field :uploaded_data %>
<% end %>


<% end %>

Since you have @product in your controller, why not just use that in
form_for? Doing so will allow you to omit :url => products_path. Thus,
you’d
have

<% form_for(@product, :html => { :multipart => true }) do |f| %>

On submitting the form I get this error:
ActiveRecord::AssociationTypeMismatch (CoverImage(#70223327600060)
expected, got HashWithIndifferentAccess(#70223341431440)):

Any thoughts greatly appreciated!

I don’t know if any of that solves your problem, but that’s how I’d do
it.
Also, I relied on Ryan Daigle’s blog post when I was doing nested
models/forms. Check it out:

http://ryandaigle.com/articles/2009/2/1/what-s-new-in-edge-rails-nested-attributes

Regards,
Craig

Maybe you just omitted this, but I think your CoverImage should declare
belongs_to :product

Thanks for the idea Craig. Thought we were on to something there for
a second but apparently not.

The update seems to work just not the create. If I change the create
method to this: (yes I changed my image class and relationship names)

def create
params[:product][:image] = ProductImage.new(params[:product]
[:image])
@product = Product.new(params[:product])

respond_to do |format|
  if @product.save
    flash[:notice] = 'Product was successfully created.'
    format.html { redirect_to(admin_products_path) }
    format.xml  { render :xml => @product, :status

=> :created, :location => @product }
else
format.html { render :action => “new” }
format.xml { render :xml => @product.errors, :status
=> :unprocessable_entity }
end
end
end

it works fine and the update works as expected with a standard REST
action.

I also noticed that if I change the image relationship to has_many the
form fields aren’t getting indexed so I end up with this:

instead of this:

etc…

I dunno seems like there must be something really fundamental that I’m
missing.

Help:-)!

I found your post and was having the same issue. I was able to solve it
by adding “_attributes” to the nested model in the form:

<% form_for(:product, :url => products_path, :html => { :multipart =>
true }) do |f| %>


<% f.fields_for(:cover_image_attributes) do |c| %>
<%= c.file_field :uploaded_data %>
<% end %>


<% end %>

For some reason, Rails, or attachment_fu are missing that link. I wrote
a post about it
http://brandon-harris.com/2009/10/18/nested-model-forms-and-attachment-fu
.

I dunno seems like there must be something really fundamental that I’m
missing.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs