[英]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.