2017-09-28 18 views
2

私は仕事があります。 別のフィールドを表示すると、私のオブジェクトのパラメータに依存します。ActiveAdminに表示する条件を追加するには

たとえば、現在のオブジェクトのmessage_typeが 'custom'の場合、 私は1つの入力を表示します。ここで

が今どのような作品コードです:

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の値をチェックしますか?怒鳴る

私のすべてのコードは:メソッドは通常、あなたが管理しているモデルにちなんで名付けられたとしてshowブロックで

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

現在のリソースが利用可能です。この場合はおそらく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 
+0

ありがとうございます。あなたは私の命を救いました) –

関連する問題