我有一项任务。 显示不同的字段取决于我的对象参数。
例如,对于我的表单,如果当前对象的message_type =' custom' 如果没有,我会展示一个输入 - 另一个。
以下是现在有效的代码:
form do |f|
if f.object.new_record? || f.object.message_type == 'custom'
f.inputs do
f.input :custom_topic
f.input :custom_content, as: :text
end
f.actions
end
end

但是对于节目我不知道如何检查它。我现在拥有的:
show do
attributes_table do
if :message_type == 'custom'
row :message_type
row(:topic) { |object| object.notification_data['topic'] }
row(:content) { |object| object.notification_data['content'] }
else
row :message_type
row :notification_data
end
end
end

当我运行调试器时它会显示我
message_type = {}符号
我同意)
但是如何检查当前对象的message_type值?
我的所有代码如下:
ActiveAdmin.register Notification do
belongs_to :case, finder: :find_by_slug
permit_params :message_type, :custom_topic, :custom_content, :notification_data
form do |f|
if f.object.new_record? || f.object.message_type == 'custom'
f.inputs do
f.input :custom_topic
f.input :custom_content, as: :text
end
f.actions
end
end
show do
attributes_table do
if :message_type == 'custom'
row :message_type
row(:topic) { |object| object.notification_data['topic'] }
row(:content) { |object| object.notification_data['content'] }
else
row :message_type
row :notification_data
end
end
end
config.filters = false
end

答案 0 :(得分:2)
在show
块中,当前资源可用作通常以您管理的模型命名的方法。在这种特殊情况下,它可能是notification
,因此以下内容可能有效:
show do
attributes_table do
if notification.message_type == 'custom'
row :message_type
row(:topic) { |object| object.notification_data['topic'] }
row(:content) { |object| object.notification_data['content'] }
else
row :message_type
row :notification_data
end
end
end