diffrnce between flash[:message] and flash[:notice] and ..

There is no difference between them.

The flash is basically a hash, where values are retrieved by using a
key.

so flash[:notice] gives you the value that belongs to notice,
flash[:something] gives you the value corresponding to the
key :something.

This means that in your controller you can do:

def some_method
  flash[:otice] = 'this is a notice'
  flash[:something_else] = 'this is something else]
end

which you can use in your view:

<%= flash[:notice] %>
<%= flash[:something_else %>

I was first also confused about the flash, I hope this helps

off course some typos :

controller has to be :

def some_method
  flash[:notice] = 'this is a notice'
  flash[:something_else] = 'this is something else'
end