我曾经把我所有的模型赞誉都存储为布尔型列,并且我试图使其更加整洁和易于管理。此操作只能由管理员进行编辑,仅供显示之用。
我希望这是复选框列表,但是我无法从ActiveAdmin更新它们。
models / user.rb
class User < ActiveRecord::Base
ACCOLADES = :great_guy, :smashing_haircut, :trimmed_nails,
:fresh_breath, :nice_shoes
serialize :accolades, Hash
store_accessor :accolades, User::ACCOLADES
admin / user.rb
ActiveAdmin.register User do
menu parent: "User Information"
...
form do |f|
f.inputs "Basics" do
f.input :name
f.input :website
f.input :email
end
...
f.inputs "Accolades" do
User::ACCOLADES.each do |accolade|
f.input accolade, as: :boolean, checked_value: 'true', unchecked_value: 'false'
end
end
end
这将按预期显示复选框列表,但是会创建错误的名称和ID的“层”
<li class="boolean input optional" id="user_great_guy_input">
<input type="hidden" name="user[great_guy]" value="false">
<label for="user_great_guy" class=""><input type="checkbox" name="user[great_guy]" id="user_great_guy" value="true">Great Guy</label>
</li>
如何获取更新序列化哈希值的复选框列表? 谢谢!
编辑:
原来是两件事。在我们之间,另一位开发人员和我误读了Store文档,并正在对其内部工作进行不同的假设。
因此,我试图创建要发送和存储在.accolades
中的哈希,但这是不正确的。在admin / user.rb中的强参数中添加:accolades和ACCOLADES可以解决此问题,现在可以按预期使用
f.inputs :accolades do
f.input :great_guy, as: :boolean, checked_value: 'true', unchecked_value: 'false'
...
end
答案 0 :(得分:0)
您可以尝试吗?
# STRONG PARAMS
permit_params do
permitted = %i[one_param another_param]
permitted << User::ACCOLADES
permitted
end
# INPUT IN THE FORM
f.inputs "Accolades" do
User::ACCOLADES.each do |accolade|
f.input accolade, as: :boolean do
f.check_box accolade, {}, "true", "false"
end
end
end