【发布时间】:2014-02-22 04:33:28
【问题描述】:
我有以下问题:我正在使用带有 jQuery 的 Rails 4.0.0,并且我有一条要删除的评论。我的javascript如下:
// deleting a comment
$('#delete_comment').click( function(event) {
event.preventDefault()
var elem = $(this).parents().eq(3)
var url = event.target.href
$.get(url, function(data) {
elem.empty()
elem.remove()
})
})
我也尝试在每次点击触发之前使用 $(document).on('click'...etc)...我有 $(document).ready (function () { .. 包含我所有的点击事件
我的 HTML 是:
<div class="comment row">
<div class="col-md-6 col-md-offset-2">
<h5><small>another goof commend </small>Alexandra</h5>
<h6><small><a autofocus="autofocus" href="/comment_destroy?comment%5Bentry_id%5D=164&id=161" id="delete_comment">delete</a></small></h6>
</div>
</div>
当我第一次点击删除评论时,我从服务器收到以下响应:
Started GET "/comment_destroy?comment%5Bentry_id%5D=164&id=160" for 127.0.0.1 at 2014-01-29 19:40:09 -0700
Processing by CommentsController#destroy as */*
Parameters: {"comment"=>{"entry_id"=>"164"}, "id"=>"160"}
User Load (1.0ms) SELECT "users".* FROM "users" WHERE "users"."id" = 1 LIMIT 1
Comment Load (4.6ms) SELECT "comments".* FROM "comments" WHERE "comments"."id" = $1 LIMIT 1 [["id", "160"]]
Entry Load (0.5ms) SELECT "entries".* FROM "entries" WHERE "entries"."id" = $1 LIMIT 1 [["id", "164"]]
(0.2ms) BEGIN
SQL (0.3ms) DELETE FROM "comments" WHERE "comments"."id" = $1 [["id", 160]]
(0.5ms) COMMIT
Rendered comments/destroy.html.erb within layouts/application (0.1ms)
User Load (0.4ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT 1 [["id", 1]]
CACHE (0.0ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT 1 [["id", 1]]
Completed 200 OK in 25ms (Views: 12.1ms | ActiveRecord: 7.4ms)
这是我要的回复,评论被删除,不重载页面……
但是,当我删除第二条评论时,我收到以下回复:
Started GET "/comment_destroy?comment%5Bentry_id%5D=164&id=162" for 127.0.0.1 at 2014-01-29 19:41:00 -0700
Processing by CommentsController#destroy as HTML
Parameters: {"comment"=>{"entry_id"=>"164"}, "id"=>"162"}
User Load (0.6ms) SELECT "users".* FROM "users" WHERE "users"."id" = 1 LIMIT 1
Comment Load (0.3ms) SELECT "comments".* FROM "comments" WHERE "comments"."id" = $1 LIMIT 1 [["id", "162"]]
Entry Load (0.3ms) SELECT "entries".* FROM "entries" WHERE "entries"."id" = $1 LIMIT 1 [["id", "164"]]
(0.1ms) BEGIN
SQL (0.3ms) DELETE FROM "comments" WHERE "comments"."id" = $1 [["id", 162]]
(0.6ms) COMMIT
Rendered comments/destroy.html.erb within layouts/application (0.1ms)
User Load (0.4ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT 1 [["id", 1]]
CACHE (0.0ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT 1 [["id", 1]]
Completed 200 OK in 12ms (Views: 5.6ms | ActiveRecord: 2.7ms)
Started GET "/assets/bootstrap.css?body=1" for 127.0.0.1 at 2014-01-29 19:41:00 -0700
它们之间的主要区别是Processing by CommentsController#destroy as */*
在第一个请求上,Processing by CommentsController#destroy as HTML 在第二个响应上。
奇怪的是,只有顶行的 cmets 会产生我想要的响应。
我已经从我的 Rails 应用程序中完全删除了 Turbolinks,并且我尝试了许多其他的方法,例如使用 jquery-turbolinks...我已经阅读了许多其他关于如何让 Rails 4.0.0 工作的问题使用 jQuery,但似乎没有一致的答案,到目前为止,没有任何建议对我有用。我已经花费了无数个小时来调试这个问题,但我束手无策。
在使用 jQuery 和 Rails 方面,有没有人有任何决定性的、明确的、确定的建议?只是不推荐吗?核心团队是如何在不知道 jQuery 有这么多漏洞的情况下发布带有 Rails 的 Turbolinks 的?我很混乱!请帮忙:)
【问题讨论】:
标签: jquery ruby-on-rails-4 turbolinks