débutant: Problèmes avec le profil de mise à jour / rediriger et amical_id
-
14-11-2019 - |
Question
Essayer de réécrire mon contrôleur de profil qui est cassé à ce stade. Im utilise amicy_id pour avoir des URL comme ci-dessous avec partiels edit_basics.haml, edit_details.haml, etc.
- / Utilisateurs / ME / Edit / Basics
- / utilisateurs / moi / modifier / intérêts
- / utilisateurs / moi / modifier / détails
Le problème consiste à mettre à jour mon profil et à rediriger vers le chemin correct après la mise à jour. J'ai cherché et essayé plusieurs choses en vain jusqu'à présent.
- Après soumettre le formulaire de modification, il redirige vers / Profils / moi
Après la mise à jour / les utilisateurs / moi / modifier / les bases, il devrait revenir à cet emplacement, la mise à jour lance une erreur dans
Méthode non définie `Update_attributes 'pour # <#: 0x007f876e77d768>
? "}," commit "=>" sauver "," id "=>" myusername "}
Bien sûr, je ne peux pas être le nom d'utilisateur
Itinéraires
match '/users/:username' => "profiles#show"
match '/users/:username/edit/:what' => "profiles#edit", :as => :edit_user
Mettre à jour l'action:
def update
@profile = Profile.where(params[:id])
respond_to do |format|
if @profile.update_attributes(params[:profile])
format.html { redirect_to @profile, :action => "edit", :what => @profile.form, notice: 'Profile was correctly updated.' }
else
format.html { @profile, :action => "edit", :what => @profile.form }
end
end
end
Modifier l'action:
def edit
@profile = Profile.find(params[:username])
what = params[:what]
if not what.nil?
if ["basics", "location", "details", "photos", "interests"].member?(what)
render :action => "edit_#{what}"
else
render :action => "edit_basics"
end
end
fin
Mise à jour: il semble que l'attribut ID contient toujours le nom d'utilisateur de l'utilisateur et ne peut donc pas mettre à jour
La solution
Essayez de mettre à jour cette ligne:
@profile = Profile.where(params[:id])
Dans votre contrôleur à cela et voir si cela aide:
@profile = Profile.where({ :id => params[:id] }).first
Cela renverra l'instance du profil, pas les critères.
J'espère que cela aide.
Emil