【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
./config/routes.rb
resources :services
を
resources :services, :except => [:show]
に変更
exceptは指定したルートを除外する意味
逆に「indexとshowだけ使用したい」といったときには「:only => [:index, :show]」を使う
・showページを削除したということで、index,new,editでshowページへのリンクを使っている行をすべて削除する
- viewファイルの編集と削除
・./app/views/services/show.html.haml を削除
showページ用のviewファイルは使わないため上記ファイルを削除する
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ページ無しで動くようになったはず。
登録・編集・削除等実際に動かして確かめましょう。