Custom Administrate Field for AASM gem.
Add this line to your application's Gemfile:
gem 'administrate-field-aasm'
And then execute:
$ bundle
Add to your dashboard:
ATTRIBUTE_TYPES = [
state: Field::Aasm
]
SHOW_PAGE_ATTRIBUTES = %i[
...
state
...
]
Add to your routes.rb
resources :orders do
member do
put '/:event', to: 'orders#transit_state'
end
end
Add to your controller
def transit_state
if requested_resource.try("may_#{params[:event]}?".to_sym)
requested_resource.try(params[:event].to_sym)
requested_resource.save
redirect_to admin_order_path(requested_resource), notice: "#{params[:event].humanize} successfully."
else
redirect_to admin_order_path(requested_resource), alert: "#{params[:event].humanize} fail."
end
end
The gem is available as open source under the terms of the MIT License.