Usuwanie komentarzy dla danego posta

Witam, mam problem z napisaniem formułki która odpowiadałaby za usunięcie komentarza w danym poście. Próbowałem zaadaptować kod który poprawnie usuwa posty ale coś mi nie wychodzi. Czy znalazłby się ktoś chętny mi pomóc? Z góry bardzo dziękuję, pozdrawiam.

KOD WIDOKU:

Wrzucone <%=h @post.data.to_s(:short) %> przez: <%=h @post.author%>
<%=h @post.title %>
<%=h @post.text%>
Komentarzy:<%= @post.comment.count %>
<%= link_to ‘Pokaż’, :action => ‘show’, :id => @post %>
<%= link_to ‘Edytuj’, :action => ‘edit’, :id => @post %>
<%= link_to ‘Usuń’, @post, :confirm => ‘Jesteś pewny?’, :method => :delete %>
<%= link_to ‘Powrót’, :action => ‘index’ %>

<% for comment in @post.comment %>
<%= h comment.created_at.to_s(:short) %> użytkownik <%= h comment.author %> napisał:
<%= h comment.text %>
<% end %>
<%= form_tag :action => ‘comment’, :id => @post %>
Dodaj komentarz:
<%= text_area ‘comment’, ‘text’, :cols => ‘50’, :rows=>‘5’ %>
<%= submit_tag “Dodaj” %> <%= form_tag %>

KOD KONTROLERA:

class PostsController < ApplicationController
include ApplicationHelper
helper :profile
before_filter :protect, :only => [:index, :edit]

def index
@posts = Post.all
@user = User.find(session[:user_id])
respond_to do |format|
format.html
format.xml { render :xml => @posts }
end
end

def show
@post = Post.find(params[:id])
@user = User.find(session[:user_id])
respond_to do |format|
format.html
format.xml { render :xml => @post }
end
end

def new
@post = Post.new
respond_to do |format|
format.html
format.xml { render :xml => @post }
end
end

def edit
@post = Post.find(params[:id])
end

def create
@post = Post.new(params[:post])
@post.data = Time.now
@user = User.find(session[:user_id])
@post.author = @user.screen_name
@post.author_id = @user.id
if @post.save
flash[:notice] = ‘Post został dodany’
redirect_to :action => ‘index’
else
render :action => ‘new’
end
end

def update
@post = Post.find(params[:id])
respond_to do |format|
if @post.update_attributes(params[:post])
format.html { redirect_to(@post, :notice => ‘Post został zaktualizowany’) }
format.xml { head :ok }
else
format.html { render :action => “edit” }
format.xml { render :xml => @post.errors, :status => :unprocessable_entity }
end
end
end

def destroy
@post = Post.find(params[:id])
@post.destroy
respond_to do |format|
format.html { redirect_to(posts_url) }
format.xml { head :ok }
end
end

def comment
@post = Post.find(params[:id])
@user = User.find(session[:user_id])
@text = (params[:comment].values_at “text”).to_s
@post.comment.create(:text => @text, :author => @user.screen_name, :author_id => @user.id)
flash[:notice] = “Komentarz został dodany”
redirect_to :action => ‘show’, :id => @post
end

end

post.comment.delete_all - wywali wszystkie
Comment.find().delete - wywali konkretny

Ps masz niezly burdel w kodzie, i na przyszlość użyj znaczników [%code%] bez % by ten kod na forum jakoś wkleic szensownie

poczytaj jakies tutki dla poczatkujacych

dzięki gotar, obiecuję że moje kolejne posty będą wyglądały ładniej, przynajmniej pod względem estetyki zamieszczenia :slight_smile: Tymczasem biorę się za próbę wdrożenia Twojej rady, pozdrawiam!

mam jeszcze jedno pytanie, dlaczego (pomijając że akcję można zdefiniować w kontrolerze) w którekolwiek miejsce widoku wstawię taki kod:

link_to(‘cokolwiek’, :action =>@post.comment.delete_all)

lub button_to zamiast link_to, wszystkie komenty są wywalane przy każdym przeładowaniu strony a nie dopiero w momencie kliknięcia na link/button?

bo to jest kod. @post.comment.delete_all wywali wszystkie komentarze w momencie kiedy interpreter dojdzie do tej linii :).