LoginSignup
0
0

More than 1 year has passed since last update.

【Rails】redirect_toでリダイレクト先に値を引き継ぐ

Last updated at Posted at 2022-05-19

コード

リダイレクト先に値を渡すにはflashを使うと良いです。

controller
flash[:user_params] = user_params
redirect_to action: :new

詳細

今回はJSを使うことなくサーバー側でバリデーションチェックから、
個々のinputへのエラー表示まで行う仕様だったので、
createでバリデーションチェックをして、
引っ掛かったらnewへ入力済みの値とエラーのカラムを渡す必要がありました。

controller
def new
  @user = flash.present? ? User.new(flash[:user_params]) : User.new
end

def create
  @user = User.new(user_params)
  if @user.invalid?
    flash[:user_params] = user_params
    redirect_to action: :new
  end
  # 以下バリデーションが通った時の処理
end

user_paramsはストロングパラメーターです。

追記

今回の本題ではないのですが、
サーバー側でバリデーションチェックで引っ掛かったカラム調べて、
それぞれの場所にメッセージ出すのであれば、
redirecet_toではなくrenderでも大丈夫だった件です。

controller
def create
  @user = User.new(user_params)
  return render :new if @user.invalid?
end
view
// エラーの中にnameが含まれているか?
= @user.errors.include?(:name)
0
0
1

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