У меня следующая проблема: я использую Rails 4.0.0 с jQuery, и у меня есть комментарий, который я пытаюсь удалить. Мой 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
во втором ответе.
Как ни странно, только комментарии в верхней строке дают нужный мне ответ.
Я полностью удалил Turbolinks из своего приложения Rails и пробовал ряд других вещей, таких как использование jquery-turbolinks... Я читал множество других вопросов о том, как заставить Rails 4.0.0 работать с jQuery, но, похоже, нет последовательного ответа, и ничего из того, что было предложено, пока не сработало для меня. Я потратил бесчисленное количество часов на отладку этой проблемы, и я в своем уме.
Есть ли у кого-нибудь убедительные, определенные, обязательно работающие советы по использованию jQuery с Rails? Просто не рекомендуется? Как основная команда выпустила Turbolinks с Rails, не зная, что в jQuery столько ошибок? Я весьма озадачен! Пожалуйста помоги :)