前言:我是Rails的新手。對JQuery和json也是一種新鮮的東西。 我目前從我的控制器呈現HTML這樣:在Rails 3視圖中渲染html和json以與jQuery解析
def new
@customer = Customer.find(params[:id])
end
我使用@customer實例來設置我的表單字段。我也有這種形式的兩個選擇幫手:
<%= select(:customer, :billing_type_id, BillingType.all.map{ |lk| [lk.name, lk.id] })%>
<%= select(:customer, :account_id, Account.all.map{ |lk| [lk.number, lk.id] }) %>
這兩個選擇列表都綁定到我的客戶模型。 BillingType模型belongs_to帳戶。 選擇BillingType後,我想自動選擇相關帳戶。允許用戶選擇除默認值以外的帳戶,這就是爲什麼兩者都在客戶模型上。自動選擇帳戶的目的純粹是爲了方便用戶。
我的第一個想法是以某種方式返回BillingType.all.to_json作爲我的控制器的新動作的一部分。然後,如果該json在客戶端可用,我可以解析它並在JQuery中連線更改事件以在選擇BillingType時選擇默認帳戶。
所以我的問題是真的分爲兩個部分:
什麼是軌道的方式來完成設置相關的選擇選項?
不管正確的方法是完成我的目標,我現在好奇如何從控制器操作同時返回json和html。我真的不認爲我想從我的文檔加載事件發出ajax請求,因爲這需要往返服務器。有沒有辦法簡單地將所有BillingType作爲json呈現給標記,以便我可以用JQuery引用它並解析json?我覺得我想要做這樣的事情:
jQuery中:
var obj = jQuery.parseJSON($("#billingtypes"));
鑑於:
<span id="billingtypes"><%= BillingType.all.to_json %></span>
我可能這一切都錯了,但很欣賞了解如何處理我的兩個問題。
選項標籤是偉大的,我不知道你能做到但─它完全解決了我的問題!另外,直接在腳本標記中直接渲染BillingType json也是可行的。我想測試選項標籤的想法,然後我將其標記爲答案。 – 2011-12-22 02:21:24
弗雷德裏克,我測試了選項標籤,它的工作,謝謝你的答案! – 2011-12-22 14:44:33
對於閱讀此內容的人來說,需要對javascript進行小的修改:\t $('#returned_check_billing_type_id')。change(function(){ \t var accountId = $(':selected',this).attr(' ); \t alert(accountId); \t //做一些很酷的事情,賬號Id \t}); – 2011-12-23 14:43:20