レール6の管理パネル


Ruby on Railsで作業するとき、私はGemに最も到達しましたActiveAdmin . それはあなたのRuby on Railsアプリの上に管理セクションを構築するためのフレームワークです.
本当に私はActiveAdminを使用して楽しんでいることは、それが静かにDateTimeフィールドを終了するようなRails規則に従って奨励することです_at . それも、デコレータ&パントのような概念を紹介します“あなたはそれを右に行う場合は、それは”経験を構築するために超迅速になります.
あなたがバックオフィスRailsアプリを構築しているならば、私はActiveAdminの中で全部のものを造る価値があることができて、リモートカスタムを書くことについて忘れることができるならば、私も議論します.

ビデオとソースコード



  • Final Source code

  • ActiveAdminを設定する
    ActiveAdminを設定することは彼らのrepoにかなりよく書かれています(そして、私がこれを書いた時から変わったかもしれません).私が変更することを期待しない唯一の前提条件は、必要ですDevise 認証を処理する設定です.
    閉じるこの動画はお気に入りから削除されています
    $ bundle add devise
    $ rails generate devise:install
    $ bundle add activeadmin
    $ rails generate active_admin:install --use_webpacker
    
    この設定は工夫され、AdminUser モデル作成app/admin フォルダとActiveAdmin資産のためにWebPackerを使用するのに必要なファイルを作成しました.

    資源、フィルタと範囲
    ActiveAdminは、セットアップの足場を助けるために端末を介して呼び出すことができるいくつかの発電機が付属しています.閉じるこの動画はお気に入りから削除されています
    $ rails generate active_admin:resource Author
    $ rails generate active_admin:resource Post
    $ rails generate active_admin:resource Category
    
    これは私たちの管理パネルの著者、ポスト&カテゴリモデルのいくつかの単純な足場を生成しました.
    私はその後、カスタマイズapp/admin/posts.rb ファイルは、我々のユーザーがアクセス&アプリの投稿を変更する方法以上の細かい穀物管理を可能にする.
    # app/admin/posts.rb
    ActiveAdmin.register Post do
      filter :title
      filter :author_name, as: :string
      filter :created_at
      filter :categories
    
      scope :published
    
      index do
        selectable_column
        column :id
        column :title
        column :published?
        column :author
        column :created_at
        actions
      end
    
      permit_params :title, :body, :author_id, category_ids: []
    
      form do |f|
        f.inputs :title, :body, :author
        f.inputs "Categories" do
          f.input :categories, as: :check_boxes
        end
        actions
      end
    
      show do
        attributes_table do
          row :title
          row :body
          row :author
          row :created_at
          row :updated_at
          row :published_at
          row :categories
        end
        active_admin_comments
      end
    end
    

    カスタムアクション
    最後の動画では、ActiveAdminリソース内でカスタムアクションを設定する方法とDraper モデルを飾る.
    # app/admin/posts.rb
    ActiveAdmin.register Post do
      includes :author
      decorate_with PostDecorator
    
      # [snip]
    
      member_action :publish, method: :put do
        resource.publish!
        redirect_to resource_path, notice: "Published!"
      end
    
      action_item :publish, only: :show, if: proc { !resource.published? } do
        link_to 'Publish', [:publish, :admin, resource], method: :put
      end
    
      # [snip]
    end
    
    私はデコレータを使用しての大ファンです(時々プレゼンターと呼ばれる)、彼らは“私の意見では、私は常にこのような形式で、このモデルからデータをしたい”と言うためにきちんとした方法を提供しています.
    例えば、もし私がいつも投稿本文をダッシュボードに出力したいならば、デコレータを使って、どのフィールドを1つの場所にフォーマットしたいかを決めます.
    # app/decorators/post_decorator.rb
    class PostDecorator < ApplicationDecorator
      delegate_all
    
      def body
        helpers.simple_format(object.body)
      end
    end