Ruby on Rails-ActiveAdmin:如何为批量操作设置表单默认输入值?
在ActiveAdmin批量操作中设置表单默认值
嘿,这个问题我之前在项目里也碰到过,其实ActiveAdmin的batch_action表单默认值配置很容易搞定,咱们直接看具体实现方式:
基础静态默认值设置
如果你原来的批量操作表单是这样写的:
batch_action :save_to_session, form: { 'Bla' => :text } do |ids, inputs| # 这里把输入值存到session session[:bla_value] = inputs['Bla'] # 后续逻辑... end
要给这个文本框加默认值,只需要把:text改成一个哈希,通过default参数指定默认内容就行:
batch_action :save_to_session, form: { 'Bla' => { type: :text, default: '你的默认文本内容' } } do |ids, inputs| session[:bla_value] = inputs['Bla'] redirect_to collection_path, notice: '值已保存到session' end
多字段的情况(适配你的3个输入框需求)
如果是三个输入字段,只需要逐个配置默认值就好:
batch_action :save_multiple_to_session, form: { '字段A' => { type: :text, default: '默认值A' }, '字段B' => { type: :text, default: '默认值B' }, '字段C' => { type: :text, default: '默认值C' } } do |ids, inputs| # 把三个字段的值分别存到session session[:field_a] = inputs['字段A'] session[:field_b] = inputs['字段B'] session[:field_c] = inputs['字段C'] redirect_to collection_path, notice: '三个字段值已保存到session' end
动态默认值(比如从session读取上次的值)
如果想要默认值是动态的——比如用上一次用户输入的内容,还可以用lambda来生成表单配置:
batch_action :save_to_session, form: lambda { { 'Bla' => { type: :text, default: session[:last_bla_value] || '初始默认文本' } } } do |ids, inputs| # 保存这次的值到session,下次用 session[:last_bla_value] = inputs['Bla'] redirect_to collection_path, notice: '值已更新到session' end
这样配置后,打开批量操作弹窗时,输入框就会自动填充你设置的默认值啦,是不是很简单😉
内容的提问来源于stack exchange,提问作者SmackerJacker
相关产品推荐
相关产品推荐

