Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.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、JSON api_Javascript_Jquery_Ruby On Rails_Ajax_Ruby On Rails 4 - Fatal编程技术网

Javascript 返回商品列表价格的Rails、JSON api

Javascript 返回商品列表价格的Rails、JSON api,javascript,jquery,ruby-on-rails,ajax,ruby-on-rails-4,Javascript,Jquery,Ruby On Rails,Ajax,Ruby On Rails 4,我有一个多选下拉框,有人建议我在rails中创建一个JSONAPI,返回给定项目列表的价格,但不确定如何返回,以寻求指导 订购咖啡 对于选定的单个项目,价格显示正确,但如果我选择的项目数超过我将得到的selectedItem.val()返回1,2,给出items/1,2.json 形式 项目 {:class=>'span6'}%> 我的项目应该动态添加,例如可以有10个以上的项目。我应该在这里使用cocoon gem吗?为什么不作为数据发送,而不是在url中发送 $.ajax({ url

我有一个多选下拉框,有人建议我在rails中创建一个JSONAPI,返回给定项目列表的价格,但不确定如何返回,以寻求指导

订购咖啡 对于选定的单个项目,价格显示正确,但如果我选择的项目数超过我将得到的
selectedItem.val()
返回1,2,给出items/1,2.json

形式

项目
{:class=>'span6'}%>

我的项目应该动态添加,例如可以有10个以上的项目。我应该在这里使用cocoon gem吗?

为什么不作为数据发送,而不是在url中发送

$.ajax({
  url: "/items.json",
  data: { selectedItem: "[" + selectedItem.val() + "]" },
  dataType: 'json'
}).done(function(data) {
  // do something with the data
});

或者类似的东西。Rails仍将解析json数据,并提供参数[:selectedVal]供您使用。如果val()是逗号分隔的,则使用方括号。

如果我有许多记录,10000条记录,我可以指定要获取哪些记录,然后通过调用的id与我需要的值匹配吗?我想你可能会问自己,为什么不分页就向用户显示10k条记录。这对我来说很难闻,如果你继续这样做,你可能会对结果不满意。打包的数据越多,就越容易出现错误,导致请求内容大小最大。我使用的是带下拉结果的select2 gem:搜索框,而不是带分页的选择框。因此,他们将搜索项目并选择它,然后他们可以搜索其他项目。如果我提取json中的所有项目并选择要显示价格的项目。有没有比拉取所有项目更好的方法?我也不建议在选择中选择10k项目。最重要的是,您不想在url中发送它。将其作为正文的一部分发送。为什么不希望在url中发送?
<%= simple_form_for(@order, remote: true) do |f| %>
  <%= f.error_notification %>
    
    <h3>Items</h3>

    <%= f.association :items, collection: Item.all, label_method: :name, value_method: :id, prompt: "Choose an item", input_html: { id: 'item-select2' }, :wrapper_html => { :class => 'span6' } %>

    <div class="product">
    <div class="item"></div>
    <div class="price"></div>
    </div>

    <div class="sub_total">
    <div class="total">
    </div>
    </div>

    <%= f.submit %>
<% end %>
$.ajax({
  url: "/items.json",
  data: { selectedItem: "[" + selectedItem.val() + "]" },
  dataType: 'json'
}).done(function(data) {
  // do something with the data
});