コード
リダイレクト先に値を渡すには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)