安装

#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

results matching ""

    No results matching ""