我有一个名为salary
的hstore属性来存储min
和max
值。为了在活动管理员(+ simple_form gem)中填写这个,我写了以下内容:
ActiveAdmin.register Job do
permit_params :salary
form do |f|
f.simple_fields_for :salary do |salary|
salary.input :min, label: 'Min Salary'
salary.input :max, label: 'Max Salary'
end
f.actions
end
end
这会向我显示包含job[salary][min]
和job[salary][max]
输入的正确表单,但在更新/创建时不会保存它们。
我做错了什么?感谢。
答案 0 :(得分:0)
hstore
需要一些特殊的ActiveAdmin
代码来处理编辑和创建。您需要编写自定义控制器操作。类似的东西:
ActiveAdmin.register Job do
controller do
def update
unless params[:job][:min].empty?
job = Job.find(params[:id])
job.min = params[:job][:min]
job.save
end
unless params[:job][:max].empty?
job = Job.find(params[:id])
job.max = params[:job][:max]
job.save
end
# Call the default update action
super
end
end
end
上面的代码片段假设您使用的是
store_accessor :salary, :min, :max
访问hstore
模型上的Job
媒体资源。