Ruby on rails 如何从rails中的多个复选框中获取哈希值?

Ruby on rails 如何从rails中的多个复选框中获取哈希值?,ruby-on-rails,Ruby On Rails,我在我的应用程序中的一些多个元素之间有一个N到M的关系。所以,我想删除表单上的所有关系。要做到这一点,我在表格中包括一个复选框,并希望将N.id和M.id传递给我的控制器 一切都正常传递给我的控制器。但我在尝试检索这些值时出错 <% duplicated.each do |element|%> <tr id="row_user_<%=element["product_lot"].id%>"> <td><%=

我在我的应用程序中的一些多个元素之间有一个N到M的关系。所以,我想删除表单上的所有关系。要做到这一点,我在表格中包括一个复选框,并希望将N.id和M.id传递给我的控制器

一切都正常传递给我的控制器。但我在尝试检索这些值时出错

    <% duplicated.each do |element|%>
      <tr id="row_user_<%=element["product_lot"].id%>">
        <td><%= check_box_tag "product_lots[]", {:bol_id => element["bill_of_lading"].id, :product_lot_id => element["product_lot"].id} %>
如果我在我的params[:product_lots]上打印,我有:

["{:bol_id=>3086, :product_lot_id=>6021}"] 
所以,我想知道如何从每个元素中获得bol_id和product_id。目前,当我尝试这样做时,我遇到了一个错误:

#{element[:bol_id]}"


no implicit conversion of Symbol into Integer 
请看以下api:

  • 第一个参数是名称:值存储在什么下,这通常显示在参数中
  • 第二个参数是值,它被字符串化以生成html标记
  • 三是开始检查状态
  • 最后是选择
因此,由于您要将一个对象传递给value,rails正在对该对象调用
.to\s
,以便创建html标记。这就是为什么会出现符号到整数的
无隐式转换
错误的原因,因为您正在调用一个字符串,该字符串返回字符串的第n个字符。不幸的是,这不是最好的错误消息,因为它没有提到您正在访问一个字符串,而不是一个散列,对于一个数组来说,这也是相同的错误消息。您可能希望序列化该值,以便以后可以取消序列化:

  • 尝试在第二个参数上调用
    .to_json
    。这会将
    参数[:product\u lots]
    中的值更改为
    ['{“bol\u id”:3086,“product\u lot\u id”:6021}']
  • 请注意,这仍然是一个字符串,因此需要对其进行反序列化(尽管rails可能会根据配置和过滤器等自动反序列化)
  • 尝试
    params[:product\u lots]。映射!{| data | JSON.parse(数据,对象_类:hashWithInferenceAccess)}
    。这将为您提供一个哈希数组(,因此您可以使用符号键)。(另见)
  • 现在,您可以获得所需的值
  • 考虑在操作/过滤器等之前将其移动到助手中,以便能够多次使用它,可能用于多个参数

多好的答案啊。完美的谢谢你,盖瑞。让我开心
#{element[:bol_id]}"


no implicit conversion of Symbol into Integer 
check_box_tag(name, value = "1", checked = false, options = {})