在循环遍历rails变量时,我无法创建单个id。我不是每个“产品”在“开关”上都有自己的ID,所以我可以在选择下拉列表中的一个元素后激活开关。
我的表格:
= form_tag orders_path, id: 'payment-form' do
- @foo.products.each do |product|
%li.bullet-item
.product.panel
.small-12
%h4
= content_tag_for :li, product, :value => product.id do
.row
.small-2.columns.switch
%input#switchName{:type => "checkbox"}/
%label{:for => "switchName"}
.small-7.columns
= hidden_field_tag("order_products[][product_id]", product.id)
= product.name
%br
.subheader= number_to_currency(product.cost_in_cents.to_f/100)
.small-3.columns
= select_tag("order_products[][quanity]", options_for_select([0,1,2,3,4,5,7,8,9,10,11,12,13,14,15]), "data-cost-per-unit" => product.cost_in_cents, id: product.name, class: 'thing')
我的jQuery
:javascript
$('.thing').change(function() {
$('#switchName').click();
});
这将点击第一个开关,但问题是两个开关都被命名为'switchName'。选择数量后,我希望它单击与之关联的开关。
如您所见,如果我有两个呈现的产品,它们都具有相同的ID。
如何点击不同产品的不同开关?
答案 0 :(得分:1)
- @foo.products.each_with_index do |product, index|
然后使用索引将输入的id设置为“switchName#{index}”
答案 1 :(得分:0)
如果你想保持自己的方式,你可以使用自己的自定义绑定。例如:
%input#switchName{:type => "checkbox", :prodid => product.id}
然后使用
$('#switchname').on('change',function() {
var product_id = $(this).attr("prodid");
// do some more of your magic here
});