ActiveAdmin :select 下拉菜单在开发中默认为当前值,但在生产中默认为空白
Posted
技术标签:
【中文标题】ActiveAdmin :select 下拉菜单在开发中默认为当前值,但在生产中默认为空白【英文标题】:ActiveAdmin :select drop-down defaults to current value in development but defaults to blank in production 【发布时间】:2014-10-19 05:03:27 【问题描述】:我有以下 ActiveAdmin 表单:
form do |f|
f.inputs "Timesheet Details" do
f.input :jobs_assigned_worker, :label => "Worker", as: :select, collection: Worker.all
f.input :worked_time_hours, :label => "Worked Time (Hours)"
f.input :worked_time_mins, :label => "Worked Time (Minutes)"
f.input :driving_time_hours, :label => "Driving Time (Hours)"
f.input :driving_time_mins, :label => "Driving Time (Minutes)"
f.input :spent_dollars, :label => "Extra Money Spent"
end
f.actions
end
当我在编辑视图中使用此表单时,选择下拉菜单会自动默认为当前值。但是在生产中,由于某种原因,下拉菜单默认为顶部的空白值(为什么那个空白值仍然存在?)。
编辑
问题似乎是 ActiveAdmin 不理解关联,默认无法选择关联对象。我需要弄清楚如何为关联编码f.input
。该表格用于时间表。一个 Timesheet has_many
JobsAssignedWorkers,每个 JobsAssignedWorker 都有一个 Worker。
【问题讨论】:
在开发中,当没有现值时会发生什么?有没有可能在生产中你有一个没有标签的工人? 每个 Timesheet 都必须有一个与之关联的 Worker 问题似乎是ActiveAdmin不理解关联,默认无法选择关联对象。我需要弄清楚如何为关联编码f.input
【参考方案1】:
如果要包含空白值:
f.input :jobs_assigned_worker,
label: 'Worker',
as: :select,
collection: -> Worker.pluck(:name) ,
include_blank: true
如果您不想包含空白值:
f.input :jobs_assigned_worker,
label: 'Worker',
as: :select,
collection: -> Worker.pluck(:name) ,
include_blank: false
如果您想拥有空白值,但又不想将其作为选项:
f.input :jobs_assigned_worker,
label: 'Worker',
as: :select,
collection: -> Worker.pluck(:name) ,
include_blank: true,
allow_blank: false
【讨论】:
【参考方案2】:尝试设置“include_blank”选项。
form do |f|
f.inputs "Timesheet Details" do
f.input :jobs_assigned_worker, :label => "Worker", as: :select, collection: Worker.all, include_blank: false
f.input :worked_time_hours, :label => "Worked Time (Hours)"
f.input :worked_time_mins, :label => "Worked Time (Minutes)"
f.input :driving_time_hours, :label => "Driving Time (Hours)"
f.input :driving_time_mins, :label => "Driving Time (Minutes)"
f.input :spent_dollars, :label => "Extra Money Spent"
end
f.actions
end
【讨论】:
以上是关于ActiveAdmin :select 下拉菜单在开发中默认为当前值,但在生产中默认为空白的主要内容,如果未能解决你的问题,请参考以下文章