Ruby on rails 带有来自枚举的复选框的Rails表单(哈希)

Ruby on rails 带有来自枚举的复选框的Rails表单(哈希),ruby-on-rails,postgresql,Ruby On Rails,Postgresql,如何从哈希枚举为在表单_中创建复选框: class UserProfile < ApplicationRecord enum locations: { Kursenai: 0, Papiskes: 1, Versiai: 2 } 我还允许强参数中的位置: ..permit(:locations) 是否应该采取其他措施将数组保存在db中 还请就此提供建议-既然enum放在一个模型中,但我也将在其他类中使用它,那么我应该将其创建为一个关注点还是一个简单类 提前谢谢 编辑: 我在控制台中

如何从哈希
枚举
为在
表单_中创建复选框

class UserProfile < ApplicationRecord
  enum locations: { Kursenai: 0, Papiskes: 1, Versiai: 2 }
我还允许强参数中的
位置

..permit(:locations)
是否应该采取其他措施将数组保存在db中

还请就此提供建议-既然
enum
放在一个模型中,但我也将在其他类中使用它,那么我应该将其创建为一个
关注点
还是一个简单类

提前谢谢

编辑:

我在控制台中执行以下操作:

p = { Kursenai: 0, Papiskes: 1, Versiai: 2 }
p.map{|k,v| [k, v]}.each do |key, val| puts key, val
我得到:

Kursenai
0
Papiskes
1
Versiai
2
 => [[: Kursenai, 0], [: Papiskes, 1], [: Versiai, 2]]

在模板中,第一个复选框没有复选框(只是标签),而最后一个复选框没有标签。嗯..

您有一个不必要的调用
map
。。哈希在枚举其中的元素时已经产生[key,value]对,因此您应该能够做到这一点:

<% UserProfile.locations.each do |key, val| %>
  ...
<% end %>

...

此外,您似乎正在尝试使用
enum
列同时存储多个值,但是,我认为
enum
列帮助器是为单个值设计的包装器,因此表单字段可能是单选按钮或
选择
菜单,而不是复选框。

oops,愚蠢的错误-
map
不返回任何内容:D最好返回一些内容:)-
UserProfile.locations.map{k,v |[k,v]}
。但这仍然不能像预期的那样工作-最后一个复选框的标签显示完整的枚举,而不是其中一项的键。请随意写一个更好的实现这个哦。。。。。。我无法相信这一点。。我把

放在那里。。。为我的家人感到羞耻…关于地图的观点很好。这是解决以前错误的结果。我使用enum是因为我对select字段使用相同的项:)谢谢!
Kursenai
0
Papiskes
1
Versiai
2
 => [[: Kursenai, 0], [: Papiskes, 1], [: Versiai, 2]]
<% UserProfile.locations.each do |key, val| %>
  ...
<% end %>