J'ai une page Ruby on Rails pour modifier un profil d'utilisateur. Le formulaire affiche le nom d'utilisateur et le courrier électronique correctement. Lorsque je change le nom dans la zone de texte et que je clique sur mettre à jour, je me retrouve sur la page edit_profile avec le message "Le profil a été mis à jour avec succès". Le problème est la valeur que j'ai changé le nom pour ne pas enregistrer dans la base de données.problème d'enregistrement de rails forme
Il n'y a aucune erreur et les paramètres dans la sortie du serveur semblent corrects.
traitement UsersController # mise à jour (pour 127.0.0.1 à 2009-05-19 22:00:48) [PUT] Paramètres: { "utilisateur" => { "name" => "nouveau nom" , "email" => "[email protected]"}, "commit" => "Mise à jour", "action" => "update", "_method" => "put", "authenticity_token" = > "59c79fa90aaf5558aaab8cddef6acb7a4c7c55c3", "id" => "1", "contrôleur" => "utilisateurs"}
Qu'est-ce que je manque?
edit_profile.html.erb
<% form_for @profile, :url => {:action => "update", :id => @profile} do |f| %>
<%= f.error_messages %>
<p>Name: <%= f.text_field :name %></p>
<p>Email: <%= f.text_field :email %></p>
<%= f.submit "Update" %>
<% end %>
users_controller.rb
def edit_profile
@profile = User.find(current_user.id)
end
def update
@profile = User.find(params[:id])
respond_to do |format|
if @profile.update_attributes(params[:profile])
flash[:notice] = 'Profile was successfully updated.'
format.html { render :action => 'edit_profile' }
else
flash[:notice] = 'Profile Error.'
format.html { render :action => "edit_profile" }
end
end
end
EDIT: Oui c'était était une question de nom, pour résoudre ce problème je l'ai changé ...
if @profile.update_attributes(params[:profile])
à
if @profile.update_attributes(params[:user])
Oui, vous avez parfaitement raison. Merci Toby. – Mark