Я использую Ruby on Rails 3.1.1 и гем jquery-rails 1.0.16. У меня проблема с использованием формы с :remote => true
.
В моем файле просмотра у меня есть:
<%= form_for(@user, :url => user_path(@user), :remote => true) do |f| %>
...
<%= f.submit "Update" %>
<% end %>
Когда я нажимаю кнопку Update
и осматриваю консоль Firebug , я вижу, что вместо одного запроса AJAX HTTP выполняются два, как и должно быть. Та же проблема возникает для всех форм в моем приложении, которые используют :remote => true
.
В чем может быть проблема? Как это исправить?
Примечание : Если я проверяю DOM, мне кажется, что на текущей странице у меня нет дубликатов значений HTML \ CSS id
.
P.S. Я : Я пытался использовать разные браузеры и очищать их кеш, но проблема все еще возникает.
P.S. II : проблема возникает в режиме разработки на локальном хосте (на моей локальной машине). Я еще не пробовал, если это происходит в производственном режиме на удаленной машине.
ОБНОВЛЕНИЕ I
В моем application.js
файле у меня было
//= require jquery
//= require jquery_ujs
//= require jquery-ui
Я попытался удалить строку require jquery_ujs
, и теперь она работает до тех пор, пока я не выполню команду bundle exec rake assets:precompile
и не перезапущу сервер. Точно : если я удаляю строку require jquery_ujs
и я не запускаю команду bundle
, она работает так, как ожидалось; но если затем я запустил команду bundle
, отправка формы AJAX больше не будет работать \ "вообще \".
Может быть, проблема связана с командой bundle
, которая генерирует файлы с отпечатками пальцев ... это может быть?
ОБНОВЛЕНИЕ II
Моя файловая система, связанная с файлами JavaScript:
app/assets/javascripts/
app/assets/javascripts/application.js
lib/assets/javascripts/
vendor/assets/javascripts/
vendor/assets/javascripts/vendor.js
vendor/assets/javascripts/jquery_plugins/plugin1.js
vendor/assets/javascripts/jquery_plugins/plugin2.js
vendor/assets/javascripts/jquery_plugins/....js
В моем app/assets/javascripts/application.js
файле у меня есть:
//= require jquery
//= require jquery_ujs
//= require jquery-ui
//
//= require_tree .
//
//= require vendor
В моем файле vendor/assets/javascripts/vendor.js
есть:
//= require_directory ./jquery_plugins
Если я запускаю следующую команду
$ bundle exec rake assets:precompile
/<MY_USER_PATH>/.rvm/rubies/ruby-1.9.2-p290/bin/ruby /<MY_USER_PATH>/.rvm/gems/ruby-1.9.2-p290/bin/rake assets:precompile:all RAILS_ENV=production RAILS_GROUPS=assets
/<MY_USER_PATH>/.rvm/rubies/ruby-1.9.2-p290/bin/ruby /U<MY_USER_PATH>/.rvm/gems/ruby-1.9.2-p290/bin/rake assets:precompile:nondigest RAILS_ENV=production RAILS_GROUPS=assets
в каталоге public/assets/
создает эти файлы
application-b63d5946eebe0c8d46e078ef32299fc5.js
application-b63d5946eebe0c8d46e078ef32299fc5.js.gz
application.js
application.js.gz
manifest.yml
...
Если я проверяю HTML-код страницы, я вижу следующее:
<script src="/assets/jquery.js?body=1" type="text/javascript"></script>
<script src="/assets/jquery-ui.js?body=1" type="text/javascript"></script>
<script src="/assets/jquery_ujs.js?body=1" type="text/javascript"></script>
<script src="/assets/jquery_plugins/plugin1.js?body=1" type="text/javascript"></script>
<script src="/assets/jquery_plugins/plugin2.js?body=1" type="text/javascript"></script>
<script src="/assets/jquery_plugins/....js?body=1" type="text/javascript"></script>
<script src="/assets/vendor.js?body=1" type="text/javascript"></script>
<script src="/assets/application.js?body=1" type="text/javascript"></script>