Comme je tape toujours je suis nouveau sur les rails et la programmation en général alors allez-y doucement. Merci d'avance.Création d'un blog ruby on Rails - Problème Suppression Commentaires
J'ai suivi avec succès le tutoriel initial de Ryan Bates au how to build a weblog in 15 minutes. Si vous ne connaissez pas ce didacticiel, il vous permet de créer des publications et d'autoriser les commentaires sur ces publications. Il introduit même AJAX à travers la création et l'affichage des commentaires sur la page posts.html.erb. Tout fonctionne très bien.
Voici le hoquet, quand Ryan vous emmène à travers ce tutoriel, il efface le comments_controller et affiche seulement le code pour créer des commentaires. J'essaie de rajouter la possibilité de modifier et de détruire les commentaires. Ne peut pas sembler l'obtenir au travail, continue à supprimer le post réel pas le commentaire (le journal montre que je continue à envoyer la demande DELETE à PostsController). Voici mon code:
class CommentsController < ApplicationController
def create
@post = Post.find(params[:post_id])
@comment = @post.comments.create!(params[:comment])
respond_to do |format|
format.html { redirect_to @post }
format.js
end
end
def destroy
@comment = Comment.find(params[:id])
@comment.destroy
respond_to do |format|
format.html { redirect_to(posts_url) }
format.xml { head :ok }
end
end
end
/views/posts/show.html.erb
<%= render :partial => @post %>
<p>
<%= link_to 'Edit', edit_post_path (@post) %> |
<%= link_to 'Destroy', @post, :method => :delete, :confirm => "Are you sure?" %> |
<%= link_to 'See All Posts', posts_path %>
</p>
<h2>Comments</h2>
<div id="comments">
<%= render :partial => @post.comments %>
</div>
<% remote_form_for [@post, Comment.new] do |f| %>
<p>
<%= f.label :body, "New Comment" %><br/>
<%= f.text_area :body %>
</p>
<p>
<%= f.submit "Add Comment" %></p>
<% end %>
/views/comments/_comment.html.erb
<% div_for comment do %>
<p>
<strong>Posted <%= time_ago_in_words(comment.created_at) %> ago
</strong><br/>
<%= h(comment.body) %><br/>
<%= link_to 'Destroy', @comments, :method => :delete, :confirm => "Are you sure?" %>
</p>
<% end %>
routes.rb
ActionController::Routing::Routes.draw do |map|
map.resources :posts, :has_many => :comments
map.connect ':controller/:action/:id'
map.connect ':controller/:action/:id.:format'
end
"Je ne vois pas comment le faire fonctionner" - qu'avez-vous réellement essayé de résoudre? – fig
J'ai essayé de changer le link_to dans le commentaire.html.erb à @comment, comment, commentaires, etc. J'ai également essayé de jouer avec l'action de destruction de CommentsController en changeant le @comment = Comment.find (params [: id]) pour inclure @ post.comment.destroy (params [: comment_id]). Un couple d'autres aussi bien mais il semble que je n'ai pas quelque chose dans le fichier routes.rb fait correctement ou le link_to dans le comments.html.erb est faux. Je vais mettre à jour pour inclure le code des routes. – bgadoci