簡體   English   中英

希望能夠設置應該在多選列表中顯示的默認字段值 rails_admin

[英]Want to be able to set the default field values that should be shown in a multi-select list rails_admin

我有以下 model

class Campaign < ActiveRecord::Base
  has_many :campaign_rules
  has_many :campaign_details
  validates_presence_of [:start_at, :end_at]

  rails_admin do
    edit do
      field :slug
      field :start_at
      field :end_at
      field :is_active
      fields :campaign_rules do
        searchable :slug
      end
      fields :campaign_details
    end
  end
end

在我看來,當我想說創建一個新的廣告系列時,我會得到以下信息。 在此處輸入圖像描述

但是在我的campaign_rules model 中,我有一個名為slug的字段,我希望在多選列表的關聯記錄中將其顯示為默認文本。 例如,對於 CampaignRule #1,slug 名稱是campaign-1 ,我希望在我的多選列表中顯示campaign-1而不是CampaignRule #1

我怎樣才能做到這一點?

我還希望能夠確保顯示的多選下拉列表基於關聯的campaign_id。 目前在我的多選下拉列表中,它顯示了CampaignRule的所有記錄,即使與活動有關聯。 我該如何配置呢?

默認情況下,rails admin 使用實例的 name 屬性來顯示它們。

你可以告訴 Rails 管理員使用什么方法在初始化配置文件中添加這一行。

RailsAdmin.config {|c| c.label_methods << :rails_admin_title }

然后您將在您的標簽 model 上實現該實例方法

class CampaignRaule < ApplicationRecord
   def rails_admin_title
      self.slug
   end 
end

至於如何自定義多選下拉列表中的記錄,您可以使用常規的 ActiveRecord scope 過濾它們,如下所示:

class Campaign < ApplicationRecord
  rails_admin do
    edit do
      field :campaign_rules do
        associated_collection_scope do
          associated_collection_scope do
            campaign = bindings[:object]

            proc { |scope| scope.where(campaign: campaign) }
          end
        end
      end
    end
  end
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM