在Active Admin中填写hstore属性

时间:2015-03-23 12:47:12

标签: ruby-on-rails activeadmin simple-form

我有一个名为salary的hstore属性来存储minmax值。为了在活动管理员(+ 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]输入的正确表单,但在更新/创建时不会保存它们。

我做错了什么?感谢。

1 个答案:

答案 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媒体资源。