Активная настройка администратора
-
25-10-2019 - |
Вопрос
у меня есть Event
модель со статусом поля, которая является строкой, поэтому она появляется как text_field
. Анкет Но у меня есть список возможных статусов, и я хочу отобразить его как select
коробка. Кроме того, когда я выбираю cancel
Статус для события он должен спросить меня по причине отмены. Я не могу найти хорошего урока для этого.
Решение
ActiveEadmin использует Formtastic для генерации форм, поэтому Документация Форттастика должен ответить на ваши вопросы.
Вы можете получить выбор вместо текстового поля со следующим кодом:
form do |f|
f.status, :as => :select, :collection => STATUSES #whatever collection you want to display
end
Запуск события при выборе «отменена» должно быть решено с помощью JavaScript.
Другие советы
Ниже приведен пример почти все настройки :)
ActiveAdmin.register Event do
#Menu display index
menu :priority => 1
#Scopes
scope :all
scope :pending
scope :approved
scope :rejected
scope :cancelled
scope :featured
#Filters
filter :city
filter :user, :content_columns => :first_name
filter :name
filter :featured
filter :location
filter :details
filter :start_datetime
filter :end_datetime
# New/Edit forms
form do |f|
f.inputs do
f.input :status, :label => "Event Status", :as => :select, :collection => Event::EVENT_STATUSES
# Conditional show/hide using js
cancel_reason_style = f.object.cancelled? ? "display:block" : "display:none"
reject_reason_style = f.object.rejected? ? "display:block" : "display:none"
f.input :reject_reason, :wrapper_html => {:style => reject_reason_style}, :hint => "Required if status event rejected"
f.input :cancel_reason, :wrapper_html => {:style => cancel_reason_style}, :hint => "Required if status event rejected"
f.input :city, :label => "Event Status"
f.input :name, :label => "Name"
f.input :image, :as => :file, :hint => f.template.image_tag(f.object.image.url(:medium))
f.input :details, :input_html => { :class => 'autogrow', :rows => 5, :cols => 30, :maxlength => 10 }
f.input :start_datetime
f.input :end_datetime
f.input :location, :input_html => { :class => 'autogrow', :rows => 5, :cols => 30, :maxlength => 10 }
f.input :gmap_lattitude
f.input :gmap_logitude
f.input :email
f.input :mobile
f.input :website
end
f.buttons
end
index do
column :name
column :user
column :city
column :status
column :start_datetime
# column :end_datetime
column :email
default_actions
end
show do |event|
attributes_table do
row :name
row :details
row :user
row :city
row :status do event.status.titleize end
# has_many :through
row :themes do
event.themes.collect{|t| t.name}.join(', ')
end
row :event_type do
event.event_types.collect{|t| t.name}.join(', ')
end
row :start_datetime
row :end_datetime
row :location
row :gmap_lattitude
row :gmap_logitude
row :email
row :mobile
row :created_at
row :updated_at
end
active_admin_comments
end
end
РЕДАКТИРОВАТЬЕсть несколько тем, что доступно
https://github.com/vigetlabs/active_material