Flash Message Problem need solutions

How about something like this? Untested, but uses a self-referential
join

== controller ==

def copy
   artist = Artist.find(params[:id])
   copy = artist.copy
   flash[:message] = "This is the copy of #{@original.copies.size}"
  redirect ....
end

== model ==

class Artist < ActiveRecord::Base

  has_many :copies, :class_name => 'Artist', :foreign_key =>
'copy_id'

  def copy
   artist = copies.build_copy(attributes)
   artist.save!
   artist
end

end

If you can paste your controller to http://pastie.caboo.se/ I will
take a look. The cause of the error is not jumping out at me.

Cheers,
Nicholas

It helps to provide a link to the code :slight_smile: It's ok though I managed to
find it. The problem is:

  def copy
          @artist = Artist.find(params[:id])
            copy = artist.copy
      flash[:message] = "This is the copy of #{@original.copies.size}"
    end

The line should should be

copy = @artist.copy

you are missing the instance variable. You could get away with just
this as you don't need instance variables.

  def copy
      artist = Artist.find(params[:id])
      copy = artist.copy
      flash[:message] = "This is the copy of #{artist.copies.size}"
      redirect_to artist_path(copy) # action => 'show', id => copy.id
or maybe redirect back to the original?
  end

Note the correction to the flash message. Also note that you will that
you will probably want to do a redirect since this is not an
idempotent action.

HTH,
Nicholas

The solution I provided yesterday would have fixed this problem :slight_smile:

Here is the fix:

http://pastie.caboo.se/123019

Sorry, I gave you the wrong syntax.

The code:

copies.build_copy(attributes)

should be:

copies.build(attributes)

HTH,
Nicholas

Nish:

Just change:

flash[:notice] = 'This is the copy of #{@artist.copies.size}'

to

flash[:notice] = "This is the copy of #{@artist.copies.size}"

You need to use double quotes to evaluate the embedded expression.

HTH,
Nicholas

Nish, are you going back to the original screen that you made a copy
from, or a you making a copy from the new one - that's why it would be
showing a size of one.

Cheers,
Nicholas

You're very welcome, I am pleased we got you on the right track :slight_smile: