Ruby on rails 如何从rails中的多个复选框中获取哈希值?
我在我的应用程序中的一些多个元素之间有一个N到M的关系。所以,我想删除表单上的所有关系。要做到这一点,我在表格中包括一个复选框,并希望将N.id和M.id传递给我的控制器 一切都正常传递给我的控制器。但我在尝试检索这些值时出错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><%=
<% 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标记李>
- 三是开始检查状态
- 最后是选择
.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 = {})