如何从散列enum
创建form_for
复选框:Rails的形成与枚举(散)复选框
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>
但这种失败在许多方面,对前。我想我可以从循环抢key
,并将其设置为标签的价值。我Postgres有:
t.integer "locations", array: true
我还允许locations
强PARAMS:
..permit(:locations)
是否应当做其他的东西在数据库中保存数组?
另请咨询此 - 现在enum
被放置在一个模型中,但我也将其用于其他类,所以我应该创建它作为一个concern
或只是作为一个简单的类?
在此先感谢
编辑:
我在控制台下:
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]]
而且在模板中,第一个复选框出现没有一个复选框(只是标签),而最后没有标签。嗯...
oops,愚蠢的错误 - 'map'不返回任何内容:D更好地返回一些东西:) - 'UserProfile.locations.map {| k,v | [k,v]}'。但是这仍然无法按预期工作 - 最后一个复选框的标签显示完整的枚举,而不是其中的一个项目的关键。请随时写一个更好的执行这个 –
噢......不可以belevae这个..我有'
'放在那里...为我的家人耻辱... –