2017-09-29 13 views
0

Je ne parviens pas à modifier/supprimer des commentaires dans un MVC Rails basique, mais le problème est que le paramètre comments_controller recherche l'ID utilisateur et non l'ID commentaires, car l'ID utilisateur est l'étranger. clé. Ma supposition était que Comment.find (params [: id]) mènerait à comments_id, mais ceci est npot le cas.Passage comments_id au contrôleur dans l'application Rails

Ceci est la dernière partie de mon comments_controller:

def edit 
    @comment = Comment.find(params[:id]) 
    @user = current_user 
end 

def update 
    @comment = Comment.find(params[:id]) 
    @user = current_user 
    @comment.update(comment_params) 
    redirect_to @comment 
end 

def destroy 
    @user = current_user 
    @comment = Comment.find(params[:id]) 
    @comment.destroy 
    redirect_to comments_path 
end 

private 
def comment_params 
    params.require(:comment).permit(:user_id, :location, :title, :body) 
end 

Les commentaires dans les vues que je suis en train de modifier/supprimer ressembler à ceci:

 <% @user.comments.each do |w| %> 
    <tr> 
     <td>Location:<%= w.location %></td>  
     <td>Title:<%= w.title %></td> 
     <td>Body:<%= w.body %></td> 
     <td><%= link_to 'Edit', edit_comment_path %></td> 
     <td><%= link_to 'Destroy', comment_path, 
      method: :delete, 
      data: { confirm: 'Are you sure?' } %></td><br> 
    </tr> 
    <% end %> 

Merci pour tous les conseils proposés :-)

Répondre

0

Lorsque vous modifiez/détruisez votre commentaire, vous devez transmettre le commentaire actuel dans l'assistant link_to. Quelque chose commefera l'affaire.

De même avec modifier: link_to 'Edit', edit_comment_path(w)

+0

Oui! Cela a fonctionné - mais seulement la deuxième façon que vous avez suggérée, avec le w entre parenthèses directement derrière le chemin :-) – Robert