学生向けプログラミング入門 | 無料

学生向けにプログラミングを無料で解説。Java、C++、Ruby、PHP、データベース、Ruby on Rails, Python, Django

Rails6.0 | 仕事売買サイトの構築 | 42 | trestle | カテゴリー管理

[41]trestle << [ホームに戻る] >> [43]trestle | ユーザ管理


管理カテゴリを作成します。


コマンド
rails g migration AddActiveToCategory active:boolean


「db\migrate\20200712031237_add_active_to_category.rb」ファイルを編集します。


記述編集 db\migrate\20200712031237_add_active_to_category.rb
3行目に「, default: true」の記述を追加しています。

class AddActiveToCategory < ActiveRecord::Migration[6.0]
  def change
    add_column :categories, :active, :boolean, default: true
  end
end



コマンド マイグレーション適用
rails db:migrate


コマンド
rails g trestle:resource Category


「app\admin\categories_admin.rb」ファイルを以下のように編集します。


記述更新 app\admin\categories_admin.rb

Trestle.resource(:categories) do
  menu do
    item :カテゴリー, icon: "fa fa-star"
  end

  # インデックスビューに表示されるテーブルの列をカスタマイズします。
  
  table do
    column :name
    column :active
    column :created_at, align: :center
    actions do |toolbar, instance, admin|
      toolbar.link '有効化', admin.path(:activate, id: instance.id), method: :post, class: 'btn btn-success'
      toolbar.link '無効化', admin.path(:deactivate, id: instance.id), method: :post, class: 'btn btn-danger'
    end
  end

  controller do
    def activate
      cat = admin.find_instance(params)
      cat.update(active: true)

      flash[:message] = "カテゴリーが有効化されました"
      redirect_to admin.path(:show, id: cat)
    end

    def deactivate
      cat = admin.find_instance(params)
      cat.update(active: false)

      flash[:message] = "カテゴリーが無効化されました"
      redirect_to admin.path(:show, id: cat)
    end
  end

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

  form do |category|
    text_field :name
  end

end



ブラウザ確認
http://localhost:3000/admin/dashboard


ダッシュボードにカテゴリーが追加されました。

カテゴリー追加
カテゴリー追加



有効化と無効化を選択できるようになりました。

有効化と無効化
有効化と無効化



名前の変更や削除もできます。

カテゴリー名の変更と削除
カテゴリー名の変更と削除



↓↓クリックして頂けると励みになります。


[41]trestle << [ホームに戻る] >> [43]trestle | ユーザ管理