Rails 4,acts_as_commentable,删除按钮/链接

时间:2014-03-31 10:51:31

标签: jquery ruby-on-rails ajax acts-as-commentable

我有一个可评论的用户模型:

class User < ActiveRecord::Base
  acts_as_commentable

在Users控制器中,我抓住这样的评论:

@comments = @user.comments.recent.page(params[:notifications]).per(10)

在用户展示视图中,有一部分呈现评论:

<% @comments.each do |comment| %>
  <p><%= time_ago_in_words(comment.created_at) %> ago</p>
  <h4><%= comment.comment %></h4>
<% end %>

我在部分中添加链接或按钮时遇到问题,以便用户删除(最好通过AJAX调用)个人评论。我知道这是基本的Rails,但我完全迷失了。

更多信息:

class Comment < ActiveRecord::Base
  include ActsAsCommentable::Comment
  belongs_to :commentable, :polymorphic => true
  default_scope -> { order('created_at ASC') }
  belongs_to :user
end

我真的很感激这个简洁而完整的答案。

我没有包含routes.rb,因为目前只在回调其他用户操作时创建了注释。因此,在routes.rb

中没有关于评论的信息

1 个答案:

答案 0 :(得分:0)

好像往常一样,解决方案很简单:

routes.rb中:

resources :comments, only: :destroy

UsersController:

def show
  @comments = @user.comments.recent.page(params[:notifications]).per(10)
end

视图/用户/ _comments.html.erb:

<% @comments.each do |comment| %>
  <span id="<%= comment.id %>">
    <p><%= time_ago_in_words(comment.created_at) %> ago</p>
    <h4>
      <%= comment.comment %>
      <%= link_to comment, method: :delete, remote: true %>
    </h4>
  </span>
<% end %>

CommentsController:

def destroy
  @user = current_user
  @comment = Comment.destroy(params[:id])
  respond_to do |format|
    format.html { redirect_to user_path(@user) }
    format.xml  { head :ok }
    format.js
  end
end

视图/评论/ destroy.js.erb:

$('#<%= @comment.id %>').remove();