かくすけのいろいろ作るブログ

かくすけの開発者ブログです。開発の他いろいろなモノづくりについて書きます。

【Rails5】scaffoldのshowページを削除する

使用バージョン
Ruby 2.6.2
Rails 5.2.2


今回はrailsのscaffoldで作ったモデルのshowページを削除していきます!
重要な情報でもないのにデータ登録後に毎回showページ表示されるのが面倒で毎回消しちゃうんですよね。


いつもやってる作業だけどせっかくブログ作ったので手順を残すことにしました。
(showなしですぐ使えるようにするオリジナルのgeneratorとか作ってみたいなあ)

デフォルト:一覧ページ→新規登録ページ→登録→詳細ページ(show)へ遷移
目指す形:一覧ページ→新規登録ページ→登録→一覧ページへ遷移

以下手順
----------------------------
まずは普通にscaffold

ここではserviceというモデルを使用する
$ rails g scaffold service name:string
いろいろ作られる

  • routes.rbの編集
・showページへのルートを除外する
 ./config/routes.rb
resources :services

 を

resources :services, :except => [:show]

 に変更

 exceptは指定したルートを除外する意味
 逆に「indexとshowだけ使用したい」といったときには「:only => [:index, :show]」を使う

  • viewファイルの編集と削除
・./app/views/services/show.html.haml を削除
 showページ用のviewファイルは使わないため上記ファイルを削除する
 (Viewファイルではhamlを使用しています)

・showページを削除したということで、index,new,editでshowページへのリンクを使っている行をすべて削除する

  • controllerファイルの修正
・./app/controllersの2行目を編集

before_action :set_service, only: [:show, :edit, :update, :destroy]

 ↓

before_action :set_service, only: [:edit, :update, :destroy]

・以下の行を削除
  # GET /services/1
  def show
  end
・showページへのリダイレクト処理を書き換え
 まず登録時のリダイレクト処理を編集

format.html { redirect_to @service, notice: 'Service was successfully created.' }
format.html { redirect_to services_path, notice: 'Service was successfully created.' }


 次に更新時のリダイレクト処理を編集

format.html { redirect_to @service, notice: 'Service was successfully updated.' }
format.html { redirect_to services_path, notice: 'Service was successfully updated.' }

----------------------------

これでshowページ無しで動くようになったはず。
登録・編集・削除等実際に動かして確かめましょう。