EDIT:
В дополнение к полезным комментариям ниже, две прекрасные статьи Стива Шварца объясняют все ясно:
Rails 3.2.2 / jquery-rails 2.0.1 (использует jquery 1.7.1)
У меня есть ссылка, которая отправляет AJAX-запрос на добавление дополнительных полей для загрузки файла в форму. Все, что связано со страницей, работает правильно - новый фрагмент HTML поля формы извлекается с сервера и добавляется в div внутри формы.
Тем не менее,
Сервер получает два запроса GET. Одним из них является запрос AJAX; другой, кажется, является «нормальным» якорным элементом GET. Я ожидал, что "обычный" GET будет остановлен Rails UJS.
Должен ли я отключить обычное действие ссылки самостоятельно? Может кто-нибудь объяснить, что я неправильно понял, и что я должен делать вместо этого [чтобы предотвратить второй запрос]?
Я видел этот вопрос: Rails 3 UJS - контроллер вызывается дважды по link_to: remote . Соответственно, я попытался изменить компиляцию конвейера ресурсов config.assets.debug = false
, но это не дало эффекта. Более того, это не двойной запрос GET AJAX, поэтому я думаю, что это другая проблема.
Спасибо за любую помощь!
Фрагмент журнала сервера:
Started GET "/files/new?asset_number=2" for 127.0.0.1 at 2012-03-23 15:23:27 +0100
Started GET "/files/new" for 127.0.0.1 at 2012-03-23 15:23:27 +0100
Браузер HTML:
<a href="/files/new" data-remote="true" id="add_another_file" position="after" update="files">Add another file</a>
Вид:
<%= link_to 'Add another file', new_file_path, :remote => true,
:update => 'files',
:position => 'after',
:id => 'add_another_file' %>
Coffeescript контроллера:
$( ->
$('a#add_another_file').click( ->
url = '/files/new?asset_number=' + $('#files input').length
$.get(url, ((data) -> $('#files').append(data)), 'html')))