2013-05-03 47 views
0

我有一個「賣」的形式,我使用fields_for把有關產品的信息出售。動態字段field_for

這裏是我的fields_for形式:

我想有動態充滿product.price價值的「成本」 text_field當用戶在選擇區域選擇的產品,但我不不知道該怎麼做。事實上,我不知道如何獲得價值,然後把它...

任何人都可以幫助我嗎?

非常感謝。

+0

從表單中獲取成本聽起來像一個非常糟糕的主意。在另一端顯示給客戶可能很有用,但最好不要使用輸入。 – giorgian 2013-05-03 14:24:58

+0

事實上,它只是用來獲取信息,它不是爲了顧客,而是爲了賣家。 – eluus 2013-05-03 14:32:02

+0

讓我知道下面的答案是否可以解決您的問題。 – omarvelous 2013-05-09 17:12:46

回答

0

我可以想到的兩種方式,你可以做到這一點,都涉及JS。

非Ajax: 構建您的選項,幷包含每個產品的數據屬性。

<option value="<%= product.id %>" data-price="<%= product.price %>"><%= product.name %></option> 

然後onchange,只需抓住選定的選項,並把它的數據價格放在成本輸入字段。

$('body').on('change', 'select.products', function(){ 
    var that = $(this), 
     , costInput = that.parent("fieldset").("input.cost"); # Perhaps if you wrap the elements in a fieldset 

    costInput.val(that.find('option:selected').val()) 
}); 

優點:數據是有 缺點:你將不得不管理自帶的形式傭工「選擇的」部位

阿賈克斯(更好的方法): 添加onchange事件檢索所選產品的價格。

$('body').on('change', 'select.products', function(){ 
    var that = $(this), 
     , costInput = that.parent("fieldset").("input.cost"); # Perhaps if you wrap the elements in a fieldset 

    $.ajax({ 
     url: "products/price", 
     data: {id: that.find('option:selected').val()), 
     dataType: 'script' 
    }).done(function (price) { 
     costInput.val(price) 
    }); 
}); 

優點:無需使用HTML 缺點大驚小怪:想不出什麼值得一提的。