2017-10-18 17 views
0

J'ai un formulaire pour work_histories. Lorsqu'un utilisateur supprime un historique de travail, je souhaite qu'il soit redirigé vers la page de profil de son utilisateur au lieu de user_work_histories_url qui appelle cette action de contrôleur (work_histories # show). Je voulais rediriger vers la page de profil des utilisateurs qui est user_path (@user).rails rediriger l'utilisateur vers la page de profil après l'action de destruction

J'ai essayé de changer l'action destructive de work_histories pour rediriger vers user_path (@user) au lieu de user_work_histories_url mais elle indique que l'identifiant du travail que je viens de supprimer est introuvable.

voici mon contrôleur pour work_histories

# DELETE /users/:user_id/work_histories/:id 
def destroy 
@work_history = WorkHistory.find(params[:id]) 

@work_history.destroy 
respond_to do |format| 
    format.html { redirect_to user_work_histories_url, 
       notice: "The work history for your #{@work_history.job_title.upcase} job was successfully destroyed." } 
    format.json { head :no_content } 
end 
end 

est ici le show.html.erb pour work_histories

<p id="notice"><%= notice %></p> 

<p> 
    <strong>Job Title:</strong> 
    <%= @work_history.job_title %> 
</p> 

<p> 
    <strong>Job Description:</strong> 
    <%= @work_history.description %> 
</p> 

<%= link_to 'Back', user_work_histories_path(@user) %> | 
<%= link_to 'Edit', edit_user_work_history_path(@user, @work_history) %> | 
<%= link_to 'Delete', user_work_history_path(@user, @work_history), method: :delete, 
    data: { confirm: 'Are you sure you want to delete this work history?' } %> 
+0

Êtes-vous en gardant le message de notification lorsque vous modifiez l'URL? Peut-être que vous devriez créer le message d'avis avant de supprimer l'enregistrement. – Smek

Répondre

0

pense que je compris. Je ne suis pas sûr si c'est la "façon de rails" de le faire ou si c'est juste une autre de mes solutions bidouillées bien que.

J'étais dans le contrôleur work_history en essayant d'appeler user_url (@user), ce qui est comme ça que je le fais dans le contrôleur des utilisateurs mais ça a l'air quand je le change user_url (@ work_history.user). l'historique de travail appartient à l'utilisateur. Cela fonctionne ... pour le moment.

# DELETE /users/:user_id/work_histories/:id 
def destroy 
@work_history = WorkHistory.find(params[:id]) 

@work_history.destroy 
respond_to do |format| 
    format.html { redirect_to user_url(@work_history.user), 
       notice: "The work history for your #{@work_history.job_title.upcase} job was successfully destroyed." } 
    format.json { head :no_content } 
end 

fin