LoginSignup
0
0

More than 1 year has passed since last update.

Rails 投稿、入力フォームで空欄があったときにデータを保持した状態にする

Posted at

作成した投稿アプリケーションの仕様上、

「空欄で投稿したときに、値は保持したままで、入力フォームに戻ってくる」

という仕様がありました。

これの再現方法について

  def create
    @prototype = Prototype.new(prototype_params)
    if @prototype.save
      redirect_to root_path
    else
      render action: :new
    end
  end

いきなり結論、これでいけました。
順に解説

@prototype = Prototype.new(prototype_params)

ここで@prototypeというインスタンス変数に.newメソッドで生成した値を入れておきます。

if @prototype.save
      redirect_to root_path
    else
      render action: :new

これで.saveメソッドが実行された時はroot pathに戻されますが、そうではない時はrenderアクションでnewメソッドに戻ります。

つまり大事なのが、redirectとrenderの違い。
renderはインスタンス変数の値はそのままです。
そう、newメソッドに戻った時の@prototypeの値を引き継ぎます。

逆に、redirectは値を引き継がず、ページ遷移するだけです。

基本的な動作ですが、画面遷移を伴う場合、インスタンス変数が現在どの値になっているのかは正確に把握する必要がありますね。

参考文献
フォーム入力時のバリデーション機能(値のチェック)を実装する

0
0
0

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