こんにちは。たいら(@tairaengineer2)です。
転職を繰り返し現在4社経験している、10年目エンジニアです。
この記事では、 Ruby on Railsでリダイレクトでパラメータを渡す方法についてを丁寧に解説していきます。
前提条件:実行環境について
実行環境は以下の通りです。
OS | Windows10 |
---|---|
Rubyのバージョン | 2.6.6 |
Ruby on Railsのバージョン | 6.0.3.5 |
この記事ではRuby on Railsのプロジェクトは
C:\rails_study\sample
に作成しています。
Ruby on Railsのアプリケーションを新規作成するやり方はこちらの記事をご参考ください。
リダイレクトでパラメータを渡す方法を解説
リダイレクトでパラメータを渡す方法を解説します。
パラメータを渡すにはredirect_toメソッドでparamsというオプションでパラメータを設定する必要があります。
渡し方サンプルは以下です。
1 2 3 |
def detail redirect_to action: index, params:{'sample' => 'test'} end |
params内の「sample」がキー、「test」がキーに紐づく値になります。
上記のサンプルだと/detailのURIにアクセスすると、同じコントローラー内にあるindexメソッドへ
http://localhost:3000/【コントローラー名】/index?sample=test
とパラメータを設定してリダイレクトすることができます。
クエリ文字列でURLからパラメータを取得する方法については、こちらの記事をご参考ください。
paramsは「,」で区切れば複数の値を渡すことができます。
では、次の章で実際に使ってみます。
リダイレクトでパラメータを渡す方法を解説するプログラムの概要
リダイレクトでパラメータを渡す方法を解説するプログラムは、
- コントローラー
- ビュー
- config\routes.rb
3つを使います。
コントローラーの新規作成時にアクションとビューを作成できるやり方は、以下の記事をご参考ください。
コントローラーは名前を【hoge_controller】とし、
sample\app\controllers\hoge_controller.rb
に格納しています。
detailメソッドからindexメソッドへパラメータを設定してリダイレクトさせ、リダイレクト先(indexメソッド内)で値を取得してビューに渡します。
ビューは名前を【index.html.erb】とし、
sample\app\views\hoge\index.html.erb
に格納しています。
コントローラー側で受け取ったパラメータをビューで表示させ確認します。
コントローラからビューに値を渡して表示させるやり方は、以下の記事をご参考ください。
コントローラーのサンプルプログラム
1 2 3 4 5 6 7 8 9 10 11 |
class HogeController < ApplicationController def index @orange = params[:orange] @banana = params[:banana] @peach = params[:peach] end def detail redirect_to action: index, params:{'orange' => 'オレンジ', 'banana' => 'バナナ', 'peach' => 'モモ'} end end |
ビューのサンプルプログラム
1 2 3 4 5 6 7 8 9 10 |
<h1>リダイレクトで値を渡す</h1> <p> <%= @orange %> </p> <p> <%= @banana %> </p> <p> <%= @peach %> </p> |
config\routes.rbのサンプルプログラム
1 2 3 4 |
Rails.application.routes.draw do get 'hoge/detail' get 'hoge/index' end |
実行して確認
コントローラから値を取得して画面に表示することができるのかを実行して確認します。
Ruby on Railsでサーバーを立ち上げるコマンドは
1 |
rails server |
です。
サーバーを立ち上げるコマンドの詳細な説明は、こちらの記事をご参考ください。
【http://localhost:3000/hoge/detail】のURLにアクセスすると、指定したパラメータが付与されている【http://localhost:3000/hoge/index】へリダイレクトできていることが確認できました。
まとめ:リダイレクトでパラメータを渡してみよう
以上がRuby on Railsのリダイレクトでパラメータを渡す方法の解説でした!
あなたのご参考になったのなら、とても嬉しいです(*´▽`*)
ではでは~(・ω・)ノシ
コメント