Одна вещь, которую я вижу неправильно, это то, что вы не можете использовать #image
для каждого из ваших divов изображения (при условии, что на странице их много).
Каждый раз, когда вы используете подобный идентификатор элемента, он должен быть уникальным для всей страницы, в противном случае jQuery найдет первый экземпляр #image
и затем остановится.Итак, вам нужно сделать каждый из этих идентификаторов изображений уникальным, возможно, включив идентификатор модели и т. Д., Чтобы они были #image_1
#image_2
и т. Д.
Другое дело, почему у вас есть
format.html { redirect_to :back, :remote => true }
в действии контроллера для вызова AJAX?AJAX только собирается вернуть format.js
, так что это кажется ненужным.Может быть, я что-то не так понимаю.
Остальная часть вашего кода выглядит правильно.Возможно, вы захотите проверить журнал сервера Rails, чтобы убедиться, что ваш файл update_tags.js.erb
отображается во время вызова.Если это так, то у вас ошибка javascript.
Обновление: Вам также необходимо убедиться, что это установлено, чтобы Rails мог правильно запускать ваши вызовы AJAX https://github.com/rails/jquery-ujs
Вам не нужно отображать HTML, если вы используете AJAX.По умолчанию он будет отображать controller_action_name.js.erb
, поскольку это вызов AJAX, а не вызов браузера.Вы должны увидеть что-то подобное в выходных данных сервера Rails:
Started PUT "/images/1/update_tags" for 127.0.0.1 at 2011-07-16 09:33:20 -0400
Processing by ImagesController#update_tags as JS
Parameters: {"image_id"=>"1"}
Image Load (1.6ms) SELECT "images".* FROM "images" WHERE "images"."id" = 1 LIMIT 1
CACHE (0.0ms) SELECT "images".* FROM "images" WHERE "images"."id" = 1 LIMIT 1
Rendered images/update_tags.js.erb (11.3ms)
Completed 200 OK in 346ms (Views: 23.7ms | ActiveRecord: 1.7ms)