Remove Duplicate Ids in Rails Helpler

在HTML中ID在语意上应该是唯一的,所以应该避免ID重复。尽管ID重复也不会显示报错。

那么Rails中如何消除重复ID?可以在form中增加namespace选项,使得ID前会增加命名空间字串。

下面是一段示例代码:

<h1>Products</h1>

<div class="products">
      <% @products.each do |product| %>
        <div class="product">
            <%= product.name %>
            <%= product.description %>
            <%= product.price %>
            <%= form_for(@cart, target: "_blank", namespace: product.id) do |f| %>
                <%= f.hidden_field :product_id, value: product.id, namespace: product.id %>
                <% if current_user %>
                    <%= f.hidden_field :user_id, value: current_user.id, namespace: product.id %>
                <% end %>

                <%= f.number_field :amount, min: 1, max: 100, value: 1, required: true, namespace: product.id %>
                <%= f.submit "Add to Cart", class: 'btn btn-primary' %>
            <% end %>
        </div>
      <% end %>
</div>

这是Rails issue https://github.com/rails/rails/issues/2971