ここでレールとjqueryを使用して動的選択を試みています。コードは次のとおりです
<div class = "line_items">
<%- calc = Hash[Item.all.map{|p| [p.id, p.quantity]}].to_json %>
<div class = "item"><%= f.collection_select :item_id,Item.all,:id,:title, :prompt => "Select a Item", input_html: {data:{calc: calc} %></div>
<div class ="quantity"> <%= f.text_field :quantity %></div>
/*rest of code*/
</div>
ビューのjavascriptは次のとおりです
jQuery(document).ready(function(){
jQuery('.item').bind('change',function() {
var selectElement = jQuery(this);
var itemSelected = jQuery('.item:selected').val();
var wrapperDivElement = selectElement.parent(".line_items");
var quantity= eval(selectElement.data("calc"))[itemSelected];
jQuery(".quantity", wrapperDivElement).val(quantity);
});
});
アイテムを変更すると、firebug で次のエラー
が発生eval(selectElement.data("calc"))[itemSelected] is undefined
します。誰かが私が間違っているところを指摘できますか? また、数量を取得するためのより良い方法。私がやっている方法は粗雑だと感じています。どんなガイダンスも役に立ちます。前もって感謝します。