我使用Rails與jQuery,我正在打印一個簡單的網站頁面打印每個記錄到表。每個記錄的唯一可編輯字段是複選框。我的目標是每次更改複選框時,ajax請求都會更新記錄的布爾屬性(即不提交按鈕)。Rails控制器無法呈現正確的視圖時,形式強制提交的Javascript
我的視圖代碼:
<td>
<% form_remote_tag :url => admin_update_path, :html => { :id => "form#{lead.id}" } do %>
<%= hidden_field :lead, :id, :value => lead.id %>
<%= check_box :lead, :contacted, :id => "checkbox"+lead.id.to_s, :checked => lead.contacted, :onchange => "$('#form#{lead.id}').submit();" %>
<% end %>
</td>
在我的routes.rb,admin_update_path由
map.admin_update 'update', :controller => "admin", :action => "update", :method => :post
定義我也有一個RJS模板渲染還原更新。這個文件的內容,目前只用於測試(我只是想看看它是否正常工作,這不會是一個成功保存的終極功能)...
page << "$('#checkbox#{@lead.id}').hide();"
點擊時,Ajax請求是成功發送正確的參數,控制器上的動作可以檢索記錄並更新它。 問題是它不發回JS;它會更改瀏覽器中的頁面,並將生成的Javascript呈現爲純文本而不是原地執行。
Rails做了一些幕後的工作來確定傳入的請求是否是ajax調用,並且我無法弄清楚爲什麼它將傳入請求解釋爲常規Web請求而不是ajax請求。
我可能在這裏錯過了一件非常簡單的事情,但我很好看,所以我想我會再要一雙眼睛。在此先感謝您的任何信息!
我更新了控制器以使用明確的respond_to塊,並且得到相同的響應:生成的JS在瀏覽器中顯示爲純文本。我認爲問題在於,當我使用jQuery來處理.submit()表單時,它並未運行由form_remote_tag助手定義的onsubmit =「...」代碼。這只是定期提交表格。這提示我問:爲什麼在使用jQuery調用$(form).submit()時,表單元素中的onsubmit值不會被執行? – whazzmaster 2010-06-03 15:46:32