Вопрос

у меня есть 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

https://github.com/activeadmin-lugins/active_admin_theme

https://github.com/paladini/activeadmin-themes

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top