Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在rails中动态选择项_Javascript_Jquery_Ruby On Rails_Ruby On Rails 3 - Fatal编程技术网

Javascript 在rails中动态选择项

Javascript 在rails中动态选择项,javascript,jquery,ruby-on-rails,ruby-on-rails-3,Javascript,Jquery,Ruby On Rails,Ruby On Rails 3,我试图在这里使用rails和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 Ite

我试图在这里使用rails和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>
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);
  });
});
当我更改项目时,我得到以下错误
eval(selectElement.data(“calc”))[itemSelected]在firebug中未定义。有人能指出我哪里出了问题吗?还有什么更好的方法来获取数量。我觉得我的方法很粗糙。任何指导都会有帮助。提前谢谢。

我想你把索引引用和ID引用弄混了。我不是Javascript向导,但是你用一个列表来填充哈希。然后在更改事件中获得“val”值。它包含一个整数,但不是索引

然后在Javascript中请求索引为val的项,而不是值为val的项。可能Javascript无法区分它们,因为两者都需要Int

是这样的:

var quantity= eval(selectElement.data("calc"))[itemSelected];

我想你把索引引用和ID引用混在一起了。我不是Javascript向导,但是你用索引列表填充哈希。然后在更改事件中获得“val”值。它包含一个整数,但不是索引

然后在Javascript中请求索引为val的项,而不是值为val的项。可能Javascript无法区分它们,因为两者都需要Int

是这样的:

var quantity= eval(selectElement.data("calc"))[itemSelected];
我猜没有检测到itemSelected的值,因此出现了错误。上面重新定义的代码应该可以工作。但我强烈要求你们不要得到这样的数据。最好通过json调用或ajax调用从控制器获取相关数据。并在代码中使用
parents
而不是
parent

我猜没有检测到itemSelected的值,因此出现了错误。上面重新定义的代码应该可以工作。但我强烈要求你们不要得到这样的数据。最好通过json调用或ajax调用从控制器获取相关数据。并在代码中使用
parents
而不是
parent