如何添加条件以在ActiveAdmin

时间:2017-09-28 14:36:20

标签: ruby-on-rails activeadmin

我有一项任务。 显示不同的字段取决于我的对象参数。

例如,对于我的表单,如果当前对象的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




1 个答案:

答案 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