Aktive Administratoranpassung
-
25-10-2019 - |
Frage
ich habe ein Event
Modell mit Feldstatus, der String ist, so dass es als a erscheint text_field
. Aber ich habe eine Liste möglicher Status und ich möchte sie als select
Kasten. Auch wenn ich auswähle cancel
Status für eine Veranstaltung sollte mich nach dem Stornierungsgrund fragen. Ich kann dafür kein gutes Tutorial finden.
Lösung
ActiveDmin verwendet formtastisch für die Form der Form, also Die Dokumentation von Formtastic sollte Ihre Fragen beantworten.
Sie können mit dem folgenden Code eine Auswahl anstelle eines Textfelds erhalten:
form do |f|
f.status, :as => :select, :collection => STATUSES #whatever collection you want to display
end
Das Auslösen eines Ereignisses bei der Auswahl von "storniert" sollte mit JavaScript gelöst werden.
Andere Tipps
Im Folgenden finden Sie das Beispiel fast alle Anpassungen :)
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
BEARBEITENEs stehen einige Themen zur Verfügung
https://github.com/vigetlabs/active_material