如何在gem上的acts_as_commentable中销毁注释?

时间:2014-05-07 13:40:40

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

我一直在尝试删除我创建的评论作为可评论的宝石。

我的代码:

<%= link_to "×", comment_delete_place_path(comment.id), :method => :delete, :remote => true, :confirm => "Are you sure you want to remove this comment?", :disable_with => "×", :class => 'close' %>

控制器:

def comment_destroy
    if params[:comment]
      @comment = Comment.find(params[:id])
      if @comment.destroy
        respond_to do |format|
          format.html { redirect_to @place, notice: 'The comment was successfully deleted!'}
          format.js
      end
    end
  end
end

路线:

delete 'places/comment/:id' => 'places#comment_destroy', as: 'comment_delete_place'

它没有给我任何错误,但它没有删除评论。我哪里错了?

2 个答案:

答案 0 :(得分:1)

使用除GET之外的任何方法的link_to实际上是一个坏主意,因为可以在新的选项卡/窗口中右键单击并打开链接,并且因为这只是复制url(而不是方法),它将为非 - 链接。此外,链接被网页索引蜘蛛点击,即使有问题的链接可能只对登录用户(因此不是蜘蛛),或者有'确认',这仍然是不好的做法。

最好使用button_to,这会使rails生成一个表单来产生相同的结果。

从实际的角度来看,按钮更好(出于上述原因)但从概念的角度来看它们也更好:一般来说,链接应该“带你去某个地方”,而按钮应该“做点什么”。保持这两个基本功能是分开的。

尝试使用button_to(您需要检查api中的语法)。如果它仍然不起作用,请检查表单中的网址,并将其与rake routes | grep comment

的输出进行比较

答案 1 :(得分:1)

在您的远程请求中,没有comment参数(仅提供id参数),因此以下行始终为false,您可以删除它:

 if params[:comment]