2010-04-12 13 views
9

Her zaman yazdığım gibi raylara ve programlamaya yeni katılıyorum, bu yüzden kolayca gidin. Şimdiden teşekkürler.Rails üzerinde bir blog yakutu oluşturma - Sorun Silme Yorumlar

Ryan Bates'den how to build a weblog in 15 minutes numaralı telefondaki ilk eğiticiyi başarıyla takip ettim. Bu öğreticiyi bilmiyorsanız, yayınlar oluşturup bu yayına yorum yapmaya izin verirsiniz. Hatta AJAX'ı, show.html.erb sayfasında yer alan yorumların oluşturulup görüntülenmesiyle tanıştırır. Tüm işler harika.

Ryan, bu öğretici olsa da, siz bu yorumları okuduktan sonra, yorumlar_komutlayıcıyı temizlediğinde ve yalnızca yorum oluşturma kodunu görüntülediğinde, hıçkırıktır. Yorumları düzenleme ve yok etme yeteneğini geri eklemeye çalışıyorum. Çalışmak için görünmüyor gibi görünmüyor, asıl gönderiyi silme yorumunu yazmıyor (günlükte, SİLME isteğini, SendController'a göndermeyi sürdürdüğümü gösteriyor).

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

: İşte benim kodudur
+0

"Çalışmak için göremiyorum" - aslında onu düzeltmeye çalıştınız mı? – fig

+0

Comment.html.erb dosyasında @comment, yorum, yorumlar, vb. Link_to değiştirmeyi denedim. @ Comment = Comment.find (params [: id]) değiştirerek CommentsController eylemini yok etmeye çalıştım. @ post.comment.destroy (params [: comment_id]) eklemek için. Diğerleri de bir çift ama ya ben route.rb dosyasında bir şey yok ya da comments.html.erb içinde link_to bir şey yok gibi görünüyor. Rota kodunu dahil etmek için güncelleyeceğim. – bgadoci

cevap

12

meagar doğru yolda olduğunu, ancak bu iç içe geçmiş rota olduğundan yapmanız gereken: temelli rotayı anlamaya

Yani <%= link_to 'Destroy', [@post, comment], ... %>

, açıklamayı ve yazı geçen ve raylar icar tanımlarınız üzerine.

+0

için undefined method 'comment_path 'teşekkür ederim. Her kombinasyonu denedim ama bu gibi. Mükemmel çalıştı. – bgadoci

1

_comments.html.erb içinde.210 IE

<%= link_to 'Destroy', comment, ... %> 

için, o comment değil, tüm @comments dizi kendini geçmektedir.

+0

Bunu yaptığımda şu hatayı alıyorum: # bgadoci

İlgili konular