我正在使用Ruby on Rails 3.1.1和jquery-rails 1.0.16 gem。我在使用:remote => true
表單時遇到問題。使用AJAX表格時遇到問題
在我看來,文件我有:
<%= 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:本地主機(在本地計算機上)的開發模式中出現問題。如果發生在遠程計算機上的生產模式中,我還沒有嘗試過。
更新我
在我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
命令有關......可能是那個?
UPDATE 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
如果我在public/assets/
目錄中運行以下命令
$ 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
它創建這些文件
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>
您的'app/assets/javascripts'文件夾中是否還有'jquery-ujs.js'文件? –
@Dylan Markow - 我更新了問題。如果問題依賴於'require jquery_ujs'行,你能否給我一個確認? – user12882