安装
#gem安装
gem 'activeadmin'
gem 'devise' #依赖devise
gem 'jquery-rails' #依赖jquery-rails
#系统内设置,同时设置devise
rails generate active_admin:install #activeadmin安装
rails db:migrate
rails db:seed #默认的登录用户和密码是[email protected]和password
#登录地址
http://localhost:3000/admin/
#生成两个资源
rails g scaffold User name email
rails g scaffold Post title body:text published_at:datetime user:references
rails db:migrate
#为生成的资源建立后台操作系统
rails g active_admin:resource User
rails g active_admin:resource Post
#必须后台设置限制资源
#app/admin/user.rb
ActiveAdmin.register User do
permit_params :name, :email
end
#app/admin/post.rb
ActiveAdmin.register Post do
permit_params :title, :body, :published_at, :user_id
end
更新数据操作
#app/admin/post.rb
action_item :publish, only: :show do
link_to "发布", publish_admin_post_path(post), method: :put if !post.published_at?
end
action_item :publish, only: :show do
link_to "不发布", unpublish_admin_post_path(post), method: :put if post.published_at?
end
member_action :publish, method: :put do
post = Post.find(params[:id])
post.update(published_at: Time.zone.now)
redirect_to admin_post_path(post)
end
member_action :unpublish, method: :put do
post = Post.find(params[:id])
post.update(published_at: nil)
redirect_to admin_post_path(post)
end
设置自定义查询
#post.rb
class Post < ApplicationRecord
belongs_to :user
scope :published, ->{ where.not(published_at: nil) }
scope :unpublished, ->{ where(published_at: nil) }
end
#app/admin/post.rb
scope :all
scope :published
scope :unpublished
设置后台页面的输入字段
#app/admin/post.rb
form do |f|
inputs "Details" do
input :user
input :title
input :body
end
actions
end