Ruby on rails 4 Rails 4:ActiveAdmin在更新时清除数组字段
我注册了一个ActiveAdmin模型,如下所示:Ruby on rails 4 Rails 4:ActiveAdmin在更新时清除数组字段,ruby-on-rails-4,activeadmin,Ruby On Rails 4,Activeadmin,我注册了一个ActiveAdmin模型,如下所示: ActiveAdmin.register MyModel do permit_params :name, :synonyms filter :name index do selectable_column column :name actions end end 我注意到当我从ActiveAdmin界面更新一个对象时,同义词被清除了。同义词是在PostgreSQL数据库中定义的数组字段: syno
ActiveAdmin.register MyModel do
permit_params :name, :synonyms
filter :name
index do
selectable_column
column :name
actions
end
end
我注意到当我从ActiveAdmin界面更新一个对象时,同义词被清除了。同义词是在PostgreSQL数据库中定义的数组字段:
synonyms text[] DEFAULT '{}'::text[]
我尝试在app/admin/my_model.rb中输入以下内容:
controller do
def update
permitted_params[:my_model][:synonyms] = JSON.parse permitted_params[:my_model][:synonyms]
super
end
end
我也用params
而不是allowed_params
尝试了它,但这也不起作用。不确定为什么ActiveAdmin会丢弃此字段。我做错什么了吗?我正在使用的项目使用ActiveAdmin1.0.0.pre4(我意识到这是一个过时的版本)
任何建议都将不胜感激。提前谢谢
注意:这可能是?我不确定这是否适用于字符串数组,我不知道Activeadmin的特定版本,但我在稍微不同的上下文中遇到了这个问题 我有一个模型,其中数组数据类型是小数和整数。我必须明确说明编辑/更新记录时要使用的表单输入类型,否则就不会从带有更新参数的字段传回任何内容。Activeadmin默认选择了一个数字输入,但它需要作为字符串处理
form do |f|
f.inputs do
f.input :ages, as :string, :input_html => {:maxlength => '100'}
end
end
我不得不手动设置maxlength,因为出于某种原因,它会自动设置得非常短。在模型中,字符串在保存之前必须转换为实际数组
def ages= items
if items.is_a? String
items = items.split(' ')
items.each do |i|
i.to_i
end
end
super items
end
我不确定这是否适用于字符串数组,我也不知道Activeadmin的具体版本,但我在稍微不同的上下文中遇到了这个问题 我有一个模型,其中数组数据类型是小数和整数。我必须明确说明编辑/更新记录时要使用的表单输入类型,否则就不会从带有更新参数的字段传回任何内容。Activeadmin默认选择了一个数字输入,但它需要作为字符串处理
form do |f|
f.inputs do
f.input :ages, as :string, :input_html => {:maxlength => '100'}
end
end
我不得不手动设置maxlength,因为出于某种原因,它会自动设置得非常短。在模型中,字符串在保存之前必须转换为实际数组
def ages= items
if items.is_a? String
items = items.split(' ')
items.each do |i|
i.to_i
end
end
super items
end
请尝试self.params['synonyms']=JSON.parse params['my_model]['synonyms]我在代码中没有定义表单。你到底是如何更新对象的?在我帮助开发的应用程序中,甚至有From完全没有许可参数,使用as::select form input和multi-select作为数组:`form do | f | f.inputs do f.input:items,as::select,collection:MyModel::items.values,multiple:true end end`try self.params['synonyms']=JSON.parse参数['my_model]['synonyms]我看到你的代码中没有定义表单。你到底是如何更新对象的?在我帮助开发的应用程序中,甚至有From在没有permit_参数的情况下工作,对数组使用as::select form input with multi-select:`form do | f | f.inputs do f.input:items,as::select,collection:MyModel::ITEMS.values,多个:真结束`