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 %>