0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

管理者側ジャンル機能の作成の仕方

Posted at

ジャンル機能について

今回はジャンル機能について記述していきたいと思います。
前提として今回は顧客と管理者側に分けており、管理者側の方にジャンル作成していきます。
※adminは管理者の事です。

ジャンルのモデル作成

$ rails g model Genre

のコマンドを打ち込み作成します。

その後にマイグレーションファイルを開きカラムを追加。

db/migrate/_create_genres.rb
class CreateGenres < ActiveRecord::Migration[6.1]
  def change
    create_table :genres do |t|
      t.string :name

      t.timestamps
    end
  end
end

t.string :nameを追加してあげましょう。
nameは今回ジャンルに追加する名前の事です。

$ rails db:migrate

忘れずにrails db:migrateをしたら下準備は完了です。

Viewページに記述

今回はindex.html.erbとedit.html.erbの2つを使用します。

app/views/admin/genres/index.html
      <h3>ジャンル一覧・追加</h3>

      <%=form_with model: @genre,url: admin_genres_path, method: :post do |f| %>

        <td><%= f.label :"ジャンル名", class: "mr-3" %></td>
        <td><%= f.text_field :name, class: "mr-5" %></td>
        <td><%= f.submit'新規登録',class: "btn btn-primary" %></td>

      <% end %>
          
        <th>ジャンル</th>
       <% @genres.each do |genre| %>
         <td><%= genre.name %></td>
         <td><%= link_to "編集する", edit_admin_genre_path(genre.id), class: "btn-success" %></td>
       <%end%>
app/views/admin/genres/edit.html
      <h3>ジャンル編集</h3>

      <%= form_with model: @genre, url: admin_genre_path,method: :patch do |f| %>
        <td><%= f.label :"ジャンル名", class: "mr-3" %></td>
        <td><%= f.text_field :name, class: "mr-5" %></td>
        <td><%= f.submit "変更を保存", class: "btn btn-primary" %></td>
      <% end %>
   

indexとeditにそれぞれform_withなどを用いながら作成していきます。
レイアウトはこの状態では綺麗ではないのでそれぞれの好みに合わせて見た目などは作成してください。

コントローラーに記述

app/controllers/admin/genres_controller.rb
class Admin::GenresController < ApplicationController
  def index
    @genre = Genre.new
    @genres = Genre.all
  end

  def create
    @genre = Genre.new(genre_params)
    @genre.save
    redirect_to admin_genres_path
  end

  def edit
    @genre = Genre.find(params[:id])
  end

  def update
    @genre=Genre.find(params[:id])
    @genre.update(genre_params)
    redirect_to admin_genres_path
  end

private

  def genre_params
     params.require(:genre).permit(:name)
  end

end

スクリーンショット 2022-11-22 23.11.53.png
これらをそれぞれコントローラーに記述し定義してあげレイアウトを整えるとシンプルではありますが上の写真のようにジャンルの一覧と追加を行う事ができます。

こちらの使い方の前提として管理者側でジャンルを追加し、顧客側で追加したジャンルを反映させ使用するものとなりますので使い方を間違えないようにお願いいたします。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?