radhames brito wrote:
> is the comment form in the commentable  show view , for example, 
> comments
> are displayed at the bottom of the the article, and is the same with any
> commentable, you dont need this
> 


Yes, right now. The article show page renders a partial of a comment 
form.


>  def new
>     @commentable = find_commentable               <===== is no needed 
> here
>     @comment = Comment.new                            <====== this is ok
>     @comment.parent_id = params[:in_reply_to] if
> params[:in_reply_to]             <==== where is params[:in_reply_to] 
> coming
> from?
>   end
> 


My article's show page renders a partial for comments:
<%= render 'shared/comments' %>

Here is what the comments looks like:
<% unless @comments.nil? || @comments.empty? %>
    <%= render :partial => 'shared/comment', :collection => @comments %>
    <%#= will_paginate @comments %>
<% end %>

And each comment has this link which is where the params[:in_reply_to] 
comes from:
  | <%= link_to "Reply", new_comment_path(:in_reply_to => comment.id) %>


> 
> 
> def create
>     @commentable = find_commentable               <=== as explained 
> returns
> @article or whatever from the /article/1 path
>     if @commentable.nil? # Threaded Comments          <==== this will 
> never
> happen under normal circumstances
>       @comment = Comment.new(params[:comment])       <==== you are 
> creating
> orphan comments and will never be able to read them
>     else
>       @comment = @commentable.comments.build(params[:comment]) 
> <
> ===== this is ok
>     end
>     @comment.user_id = current_user.id
> <=========== this is ok , from here to the end of create
>     if @comment.save
>       flash[:success] = "Comment saved."
>       redirect_to polymorphic_path(@commentable)
>     else
>       flash[:error] = "Error in creating comment."
> # @comments = @commentable.comments.paginate(:page => params[:page])
>       render 'new'
>     end
>   end
> 
> 
> now the destroy action
> 
> 
> def destroy
>     @commentable = find_commentable                               <== no
> need to find the parent you are going to delete it
>     if @commentable.comments.find(params[:id]).destroy        <== no ,
> change this to    @comment = Comment.find(params[:id])
>       flash[:success] = "Comment
> deleted."
>     else
>       flash[:error] = "Comment could not be deleted."
>     end
>     redirect_to @commentable
>   end
> 
>  change the above to
> 
> def destroy
>   @comment = Comment.find(params[:id])
>      if @comment.destroy
>        flash[:success] = "Comment
> deleted."
>      else
>       flash[:error] = "Comment could not be deleted."
>     end
>     redirect_to @commentable
>   end
> 
> 
> the edit
> 
> def edit
>     @commentable = find_commentable
>     @comment = @commentable.comments.find(params[:id])
>     @title = "Edit Comment"
> # The following code allows editing directly on the article page.
> # @comments = @article.comments.paginate(:page => params[:page])
> # render 'articles/show'
>   end
> 
> 
> same as the new , is you are editing at he show of the comentable the 
> user
> will never go to the comments edit page.
> 
> 
> now the update
> 
> def update
>     @commentable = find_commentable
>     @comment = @commentable.comments.find(params[:id])
>     if @comment.update_attributes(params[:comment])
>       flash[:success] = "Updated Comment"
>       redirect_to @commentable
>     else
>       flash[:error] = "Comment update failed."
>       @comments = @commentable.comments.paginate(:page => params[:page])
>       render 'edit'
>     end
>   end
> 
> 
> this one is ok but pay attention to  render 'edit', if the user will 
> never
> go there.
> 
> and last
> 
>  def correct_user
>       @commentable = find_commentable
>       redirect_to(@commentable) unless current_user.admin?
>     end
> 
> 
> try using an authorization gem instead



Sorry about the edit and destroy methods. You can ignore them for now. I 
was going to change them after I learned how the create and new methods 
worked. Don't worry about the edit and destroy methods.


I am using Rails 3.
-- 
Posted via http://www.ruby-forum.com/.

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en.

Reply via email to