【问题标题】:rails/jquery How to pass data from jquery to embedded ruby in js.erb file?rails/jquery 如何将数据从 jquery 传递到 js.erb 文件中的嵌入式 ruby​​?
【发布时间】:2018-03-27 20:55:36
【问题描述】:

在我看来,我有一个从 ProductPrice 模型(has_many 关系)中提取产品定价的选择框。

我正在尝试从 ProuductPrice 模型中获取价格,以使用所选选项的价格更新视图中的跨度。

view:

<label>Size</label>
<select id="volumeinfo" name="volumeinfo">
  <%= options_from_collection_for_select(@product.prices, :id, :volume_info) %>
</select>

<span id="price"></price>



product_prices model

def volume_info
  "#{volume} #{unit}"
end



volumeinfo.js.erb

productid = $( "#volumeinfo" ).val()

$( "#volumeinfo" ).change(function() {
  // Possible to fetch productid from ProductPrice model?
  $("#price").text("<%= ProductPrice.find().price %>")
});

【问题讨论】:

  • 在您的.change 函数中,您需要对服务器进行ajax 调用,然后将返回值插入您的price span。
  • 您可以在创建选项时将价格属性添加到选项中,并使用 jquery 从所选选项中获取价格属性,而无需另一个 ajax 请求
  • ^ 说得好。

标签: jquery ruby-on-rails


【解决方案1】:

您可以使用类似的方法将data-price 属性添加到您的选项中:

options_for_select(@product.map{ |product| [product.name, product.id, { 'data-price' =&gt; product.price }] })

然后使用 jquery 从所选选项中获取 data-price 属性的值,例如:

$("#volumeinfo").find("option:selected").attr("data-price)

使用此方法,您无需发出任何不必要的 ajax 请求即可获得价格。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-25
    • 2012-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-23
    • 1970-01-01
    相关资源
    最近更新 更多