我有一个Event
模型,其字段状态为字符串,因此显示为text_field
。但我有一个可能的状态列表,我想将其显示为select
框。此外,当我为某个活动选择cancel
状态时,它应该询问我取消原因。我无法为此找到好的教程。
答案 0 :(得分:55)
以下是几乎所有自定义的示例:)
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
答案 1 :(得分:12)
ActiveAdmin使用Formtastic生成表单,因此Formtastic's documentation应该回答您的问题。
您可以使用以下代码获取选择而不是文本字段:
form do |f|
f.status, :as => :select, :collection => STATUSES #whatever collection you want to display
end
选择“已取消”时触发事件应使用javascript解决。