Rails jquery仅加载到第一个元素

Rails jquery仅加载到第一个元素,jquery,ruby-on-rails,ruby,drop-down-menu,Jquery,Ruby On Rails,Ruby,Drop Down Menu,我想创建一个下拉列表,其中包含指向不同控制器操作的链接。我有一个助手方法为下拉列表提供选项 def my_product_options(product) if product.status == Product::STATUS_INCOMPLETE my_options = {"Select" => '', "Edit info" => edit_product_path(product)} elsif product.status == Pr

我想创建一个下拉列表,其中包含指向不同控制器操作的链接。我有一个助手方法为下拉列表提供选项

   def my_product_options(product)
    if product.status == Product::STATUS_INCOMPLETE
       my_options =  {"Select" => '', "Edit info" => edit_product_path(product)}
    elsif product.status == Product::STATUS_ACTIVE
       my_options =  {"Select" => '', "Edit info" => edit_product_path(product), "Suspend" => suspend_product_path(product)}
    end
    my_options
   end
我循环浏览每个产品,并获得每个产品的选项。但问题是,所有产品的下拉列表都加载了它们的选项,但单击仅适用于第一个产品。当我单击其余的下拉选项时,什么也没有发生

我有jquery来处理视图中的单击事件

<script>
$('#create_options').change(function() {
    window.location = $(this).find('option:selected').val();
});
</script>

$('#创建选项')。更改(函数(){
window.location=$(this.find('option:selected').val();
});

任何建议、解决方案或不同的方法都会大有帮助。谢谢。

是的,当您对同一文档上的多个元素使用相同的ID时,会发生这种情况
您必须改用class

$('.create_options').change(function() {
 //^-----use class instead of id
    window.location = $(this).find('option:selected').val();
});
见:
在fiddle中,您可以看到“使用ID”和“使用类”两个选项,请尝试对每个选项进行注释

一个接一个。


如果对同一页面中的多个元素使用相同的id表示法,则只有第一个事件将获得事件,而不是其他事件。

您可以发布此选择列表的呈现html的外观吗?所有这些元素都具有不同的产品id,外观相同选择编辑信息挂起
-id(和名称)需要为每个选择列表更改“创建选项”。您可以这样添加一个类:
刚刚添加了一个fiddle。很高兴这对你有帮助。:)