renderとredirect_toの使い分け
render
別のアクションを経由せずに、直接ビューを表示する。
使用目的 : エラーなどで処理が正常に完了せず、元の画面に戻したいだけの時に使用する。
def create render :new # 表示するviewファイルを指定 end
→ 登録に失敗したら、新規登録画面を表示する。
controller → view
(createアクション) → (新規登録画面)
redirect_to
他のURLに転送する。
使用目的 : データの追加(create)、更新(update)、削除(destroy)をしたいときに使用する。
def create task = Task.new(task_params) task.save! redirect_to tasks_url end
→ 登録画面で入力されたデータがデータベースに保存されて、一覧画面(tasks_url)に移動する
controller → URL → route → controller → view
(createアクション) → (HTTPリクエストを受け取る) → (リクエストを処理) → (indexアクション) → (一覧画面)
※ render、redirect_toを記述しないと、renderで処理される。(renderは省略可)
登録が成功するとき(データベースに変化があるとき)は、redirect_toを使う。
この認識でいいのかな〜。。