看起来像我的表单执行的操作 - 发送正确的值,但不保存在数据库中。 Check_box_tag需要从enum
(我用枚举,因为我使用的选择字段相同的数据):Rails check_box_tag - 将数组保存到Postgres中
class UserProfile < ApplicationRecord
enum locations: { Kursenai: 0, Papiskes: 1, Versiai: 2 }
而在的form_for:
<% UserProfile.locations.each do |key, val| %>
<%= f.label key %>
<%= check_box_tag('user_profile[locations][]', val, false, id: val) %>
<% end %>
但不能更新:
“ [“0”,“1”]'不是有效位置
Postgres:
t.integer "locations", array: true
因此,我认为,因为行类型是integer
失败,但这样的:
<%= check_box_tag('user_profile[locations][].to_i', val.to_i, false, id: val) %>
删除错误,但用户领域:locations
仍然nil
。我错过了什么?
强PARAMS:
..permit(locations: [])
附:如果您认为这可以以更好的方式完成 - 请随时展示。
然后呢?我仍然会在那里散列enum –
@ J.D。解释我的观点更好一点 – kolas
谢谢,@ kolas,但我看不出有这样的严重理由。枚举是更轻,在这种方法中,我会创建许多静态对象,而在课堂上包括枚举看起来更轻的工作。我现在正在处理简单的字符串数组,并对其进行哈希处理,因为之后我可能会删除或向其添加项目。但我想我一定会用这种方式,如果我的字符串数组将成为对象数组。感谢您的信息。如果我错了,请纠正我 –