Patrick :
> quand je visite /profile/new, j'ai l'erreur suivante:
> undefined method `first_name' for #<Profile:0xb698fa24>
>
> si je remplace je modifie la fonction new de la manière suivante, ça marche:
>  def new
>    @profile = Profile.new(:first_name=>'',:last_name=>'')
>  end
>
> Mais c'est pas très joli.
> Est-ce qu'il y a une meilleur façon?

Une "meilleur façon" n'existe pas.

Ceci dit, voici quelques alternatives :

1/ Définir une méthode de classe dans Profile :

def Profile.new_but_blank
  new :first_name=>'', :last_name=>''
end

Et l'appeler à la place de new.

2/ Créer une instance de Profile qui servira de prototype.

BlankProfile = Profile.new(:first_name => '', :last_name => '').freeze
# le freeze n'est peut-être pas suffisant, à voir

et dans le contrôleur :

@profile = BlankProfile.dup

3/ Redéfinir Profile#initialize

def initialize(attributes = {})
  @attributes     = {}
  @prefix_options = {}
  attributes.reverse_merge! :first_name => '', :last_name => ''
  load(attributes)
end

      -- Jean-François.

-- 
Ruby ( http://www.rubyfrance.org ) on Rails ( http://www.railsfrance.org )

--~--~---------~--~----~------------~-------~--~----~
Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de 
Google Groups.
Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse 
[email protected]
Pour résilier votre abonnement envoyez un e-mail à l'adresse [EMAIL PROTECTED]
-~----------~----~----~----~------~----~------~--~---

Répondre à