javascript - Rails 使用 AJAX 删除评论

标签 javascript ruby-on-rails ajax

我在使用 AJAX 删除评论时遇到问题。当我删除评论时,页面上没有任何反应,直到刷新,但数据库中的数据被删除。我搜索这个主题超过 2 个小时,但仍然找不到答案。

浏览次数:

#annoucements/show.html.haml
=render @comments

#comments/_comment.html.haml
%ul
 %p
  %b User:
   = comment.user.username
   = time_ago_in_words(comment.created_at)
 %p
  %b Content:
    = comment.content
  - if comment.user.id == current_user[:id]
    = link_to 'Delete comment', annoucement_comment_path(@annoucement, comment), method: :delete, data: {confirm: 'Are you sure?'}, remote: true

Controller :

#comment_controller.rb
def destroy
  @annoucement = Annoucement.find(params[:annoucement_id])
  @comment = Comment.find(params[:id])
  @comment.destroy

  respond_to do |format|
    format.html { redirect_to @annoucement }
    format.js
  end
end

JS:

#destroy.js.erb

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

控制台:

Started DELETE "/annoucements/9/comments/142" for 127.0.0.1 at 2018-04-26 01:11:53 +0200
Processing by CommentsController#destroy as JS
Parameters: {"annoucement_id"=>"9", "id"=>"142"}
Comment Load (0.2ms)  SELECT  "comments".* FROM "comments" WHERE "comments"."id" = ? LIMIT ?  [["id", 142], ["LIMIT", 1]]
Annoucement Load (0.1ms)  SELECT  "annoucements".* FROM "annoucements" WHERE "annoucements"."id" = ? LIMIT ?  [["id", 9], ["LIMIT", 1]]
CACHE Comment Load (0.0ms)  SELECT  "comments".* FROM "comments" WHERE "comments"."id" = ? LIMIT ?  [["id", 142], ["LIMIT", 1]]
(0.1ms)  begin transaction
SQL (0.3ms)  DELETE FROM "comments" WHERE "comments"."id" = ?  [["id", 142]]
(82.4ms)  commit transaction
Rendering comments/destroy.js.erb
Rendered comments/destroy.js.erb (0.9ms)
Completed 200 OK in 95ms (Views: 5.7ms | ActiveRecord: 82.9ms | Solr: 0.0ms)

最佳答案

你的js正在尝试删除id为@comment_XXX的元素(XXX是被删除评论的id)。但你还没有设置这个id。将其添加到包含评论的 div

%ul{:id => "comment_#{comment.id}"}
  %p
    %b User:
      = comment.user.username
      = time_ago_in_words(comment.created_at)
    etc...

关于javascript - Rails 使用 AJAX 删除评论,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50032668/

相关文章:

javascript - 出现错误 支持的方法 : GET, HEAD Laravel

javascript - 修改 tablefilter jQuery 插件

ruby-on-rails - Ruby on Rails will_pagination 一个数组

javascript - 如何更新响应式前端和数据库?

javascript - jquery ajax 调用没有按预期返回

javascript - 无法在 'send' : Still in CONNECTING state 上执行 'WebSocket'

javascript - 异步函数返回 promise ,但调用函数未解析

ruby-on-rails - 升级到 Rails 3.2.0 并使用 Devise & tlsmail gem for Google Apps 获取 SSLError?

javascript - 在 Web 应用程序中排序

php - Ajax - 单击按钮时更新 div 标签