我一直在從Rails 2.3.14遷移到Rails 3.0.20,我不知道爲什麼我不能讓Ajax調用通過link_to with:remote => true。Rails 3.0的遷移link_to:remote => true Ajax + JQuery的ujs不工作
的Gemfile
gem "jquery-rails", "~> 1.0.19"
命令行:
rails generate jquery:install --ui
remove public/javascripts/prototype.js
remove public/javascripts/effects.js
remove public/javascripts/dragdrop.js
remove public/javascripts/controls.js
copying jQuery (1.7.1)
identical public/javascripts/jquery.js
identical public/javascripts/jquery.min.js
copying jQuery UI (1.8.16)
identical public/javascripts/jquery-ui.js
identical public/javascripts/jquery-ui.min.js
copying jQuery UJS adapter (822920)
remove public/javascripts/rails.js
identical public/javascripts/jquery_ujs.js
在頭:
<%= csrf_meta_tag %>
<%= javascript_include_tag :defaults %>
這就造成:
<meta name="csrf-token" content="qH17FbbfwQNFTHWte/CBYopzfEvf5gnHxGEUdDBfV+Y="/>
<script src="/javascripts/jquery.js?1381981377" type="text/javascript"></script>
<script src="/javascripts/jquery-ui.js?1381981377" type="text/javascript"></script>
<script src="/javascripts/jquery_ujs.js?1381981377" type="text/javascript"></script>
<script src="/javascripts/application.js?1381984319" type="text/javascript"></script>
鏈接標記,它不會工作:
<%= link_to image_tag("review-icon2_16x16.png", :border=>0),
{:controller=>"sponjson", :action=>"review", :id=>"#{sponsor.id}"},
{:remote=>true, :id=>"review_spon_id_#{sponsor.id}", :alt=>"Flag for Review", :title=>"Flag for Review", :confirm => "Review ... Are you sure?" }
%><br/>
編輯。添加鏈接標籤擴展HTML:
<a href="/sponjson/review/77" alt="Flag for Review" data-confirm="Review .. Are you sure?" data-remote="true" id="review_spon_id_77" title="Flag for Review"><img alt="Review-icon2_16x16" border="0" src="/images/review-icon2_16x16.png?1338407096" /></a>
,配套UJS:
<%= raw("<script type='text/javascript'>
$('#review_spon_id_#{sponsor.id}').bind('ajax:before', function(evt, status, data, xhr) {
beforeAjaxStatus('sstatus_#{sponsor.id}')
});
$('#review_spon_id_#{sponsor.id}').bind('ajax:complete', function(evt, status, data, xhr) {
completeAjaxStatusReview('sstatus_#{sponsor.id}')
});
</script>")%>
問題是:當我點擊鏈接,它不是一個AJAX請求。調用控制器的只是這種反應罰款:
respond_to do |format|
format.html { (head :ok) }
format.js { (head :ok) }
format.xml { (head :ok) }
end
編輯:有路線:
/sponjson/review/:id(.:format) {:controller=>"sponsors", :action=>"review"}
/sponjson/:id(.:format) {:controller=>"sponsors", :action=>"update"}
/:controller(/:action(/:id))(.:format)
這並沒有正常工作。確認:語法是一個問題,所以我改變了'確認:'你確定嗎?''..但是然後得到的HTML是:
– RubesMN
你能澄清如何將事件附加到鏈接的ID而不是數據-ID?不知道我能說出區別。 link_to呈現(我原來的版本)到:
– RubesMN
你可以運行'耙路線'和更新您的問題真正快?指定控制器,操作和id有點不好,可能不需要。 –