Ruby on Rails 【trestle】管理ダッシュボードの構築


投稿日:2020年08月29日 (土)
Ruby on Rails6.0で管理ダッシュボードを構築するのは「trestle」を利用するのが有用です。
trestleは「ActionText」「ActiveStorage」に対応しています。

trestleの利用方法は当サイトのプロジェクト「動画学習サイトを構築する(Rails6.0)」で詳しく取り上げています。
プロジェクト「お仕事サイトの構築(Rails6.0)」でも取り上げていますが、「ActionText」「ActiveStorage」にも対応できるようこの記事で解説します。

trestleで「ActionText」「ActiveStorage」を利用するにはRubyのバージョン「2.6.6」、bundlerのバージョン「1.17.3」が必要です。

まずGemFileにgemを記述します。
#管理ダッシュボード
gem 'trestle', '~> 0.9.3'
gem 'trestle-auth', '~> 0.4.0'

# trestle検索
gem 'trestle-search', '~> 0.4.2'

# trestle画像アップロードと表示
gem 'trestle-active_storage', '~> 3.0'
gem "mini_magick"
gem 'image_processing', '~> 1.2'

# trestleリッチテキスト
gem 'trestle-tinymce', '~> 0.3.0'


記述の例を以下に載せておきます。
「app\admin\gigs_admin.rb」
Trestle.resource(:gigs) do

  menu do
    item :お仕事, icon: "fa fa-address-card"
  end

  table do
    column :title
    column :active
    column :user, -> (obj) { obj.user.full_name }
    column :created_at, align: :center
    actions do |toolbar, instance, admin|
      toolbar.link '有効化', admin.path(:activate, id: instance.id), method: :post, class: 'bg-success'
      toolbar.link '無効化', admin.path(:deactivate, id: instance.id), method: :post, class: 'bg-danger'
    end
  end

  controller do
    def activate
      gig = admin.find_instance(params)
      gig.update(active: true)
      flash[:message] = "お仕事を有効化しました"
      redirect_to admin.path(:show, id: gig)
    end

    def deactivate
      gig = admin.find_instance(params)
      gig.update(active: false)
      flash[:message] = "お仕事を無効化しました"
      redirect_to admin.path(:show, id: gig)
    end
  end

  routes do
    post :activate, on: :member
    post :deactivate, on: :member
  end

  form do |gig|
    select :user_id, User.where(active: true)
    select :category_id, Category.where(active: true)
    text_field :title
    editor :description
    active_storage_field :photos
  end

  search do |query|
    if query
      Gig.where("name ILIKE ?", "%#{query}%")
    else
      Gig.all
    end
  end

  active_storage_fields do
    [:photos]
  end  


end


プロジェクト「お仕事サイトを構築する(Rails6.0)」の補助的な記事となります。
これでリッチテキスト、アクティブストレージに対応した管理ができます。
リッチテキスト.png 185KB


アクティブストレージ.png 457KB


Rails6.0 Windows MacOSX

動画学習サイトの構築 Rails6.0

  0 (0)

タスク   128

4,000円

    サンプルサイトは初期起動に15秒ほどかかります。

 
Rails6.0 Windows MacOSX

民泊サイトの構築 Rails6.0

  0 (0)

タスク   128

5,000円

    サンプルサイトは初期起動に15秒ほどかかります。

 
Rails5.0 Windows MacOSX

動画学習サイトの構築 Rails5.0

  0 (0)

タスク   100

3,000円

    サンプルサイトは初期起動に15秒ほどかかります。

 
Rails6.0 Windows MacOSX

お仕事売買サイトの構築 Rails6.0

  0 (0)

タスク   146

5,000円

    サンプルサイトは初期起動に15秒ほどかかります。

 
Rails5.0 Windows MacOSX

民泊サイトの構築 Rails5.0

  0 (0)

タスク   136

4,000円

    サンプルサイトは初期起動に15秒ほどかかります。