【问题标题】:Get all checked checkboxes values获取所有选中的复选框值
【发布时间】:2015-02-27 21:08:01
【问题描述】:

我有以下形式:

<%= form_for([company,service], :remote => true) do |f| %>
    <%= health_care_insurances.each do |hc_insurance| %>
        <label><%= hc_insurance.name %></label>
        <input id="health_care_insurance_<%= user.id %>" name="<%= hc_insurance.id %>" value="<%= hc_insurance.id %>" type="checkbox"><br/>
    <% end %>
    ...
<% end %>

提交后,为了获得良好的性能,我想获得一个包含所有已检查“hc_insurance.ids”的数组。我知道我可能会使用 javascript 将它们添加到 hidden_​​field,然后从那里获取它们,但我不确定这是一个好方法。

是否有任何轨道方式可以从控制器中拾取它们?

【问题讨论】:

    标签: javascript ruby-on-rails forms controller


    【解决方案1】:

    使所有复选框的名称与数组框相同,如下所示(这只会将选中的值提交到后端)

    <input id="health_care_insurance_<%= user.id %>" name="health_care_insurence_ids[]" value="<%= hc_insurance.id %>" type="checkbox"><br/>
    

    获取控制器中所有 health_care_insurence 的 id(假设 health_care_insurence 是单个模型)。

    HealthCareInsurence.pluck(:id)
    

    【讨论】:

    • 嗨@Coderhs,谢谢,但那不会给我所有的health_care_insurence_ids 而不仅仅是检查的那些吗?
    • @ntonnelier 您可以使用控制器 health_care_insurances.map { |h| 中的相同代码获取所有复选框 ID i.id}。 Incase health_care_insurence 是一个助手,在控制器中包含其对应的助手模块。
    • 感谢@Coderhs,但问题是我打算通过所有 HealthCareInsurance 对象节省迭代。也许没有简单的方法来解决它。
    • 如果您使用的是 Rails 4.1 +,您可以使用 HealthCareInsurence.pluck(:id)。这仅获取 id,无需遍历所有对象。
    • @ntonnelier 看来我错过了你的第一条评论。我的第一个代码将只给出检查值。它不会将所有值提交到后端..
    猜你喜欢
    • 2017-04-03
    • 1970-01-01
    • 1970-01-01
    • 2018-04-25
    • 1970-01-01
    • 2011-07-08
    • 2015-06-28
    • 1970-01-01
    • 2021-03-01
    相关资源
    最近更新 更多