如何在散列form_for
的{{1}}中创建复选框:
enum
我试着像:
class UserProfile < ApplicationRecord
enum locations: { Kursenai: 0, Papiskes: 1, Versiai: 2 }
但这在许多方面都失败了,例如。我以为我可以从循环中抓取<div class="field">
<% UserProfile.locations.map { |k, v| }.each do |key, val| %>
<%= f.label key %><br />
<%= f.check_box :locations, {:multiple => true}, val, nil %>
<% end %>
</div>
并将其设置为标签的值..我的Postgres有:
key
我也允许t.integer "locations", array: true
使用强大的参数:
locations
是否应该在db中保存数组?
请同时提出建议 - 现在..permit(:locations)
被放置在一个模型中,但我也会在其他类中使用它,所以我应该将它创建为enum
还是仅仅作为一个简单的类?
提前致谢
编辑:
我在控制台做:
concern
我得到了:
p = { Kursenai: 0, Papiskes: 1, Versiai: 2 }
p.map{|k,v| [k, v]}.each do |key, val| puts key, val
在模板中,第一个复选框显示时没有复选框(只是标签),而最后一个没有标签。唔...
答案 0 :(得分:2)
你有一个不必要的map
调用..哈希已经产生了[key,value]对,同时枚举了其中的元素,所以你应该能够做到这一点:
<% UserProfile.locations.each do |key, val| %>
...
<% end %>
此外,您似乎尝试使用enum
列同时存储多个值,但是,我相信enum
列帮助器设计为围绕奇异值的包装器,因此表格字段应该是单选按钮或select
菜单,而不是复选框。