ruby/rails ノートその2

_pathと_urlの違い

_urlはhttpからの出力になり、_pathは相対パスになる。
リダイレクトする際は_urlを使い、それ以外は_pathとかくと良い。
Railsの規則。

render とは

render :new とはそのコントーラーに対応するviewを表示する。
例えば、users_controllerにこのrenderが書いてあれば、views/users/new.html.erbを表示し、sessions_controllerにrender :newが書いてあればviews/sessions/new.html.erbを表示する。

以下全て同じ。

render :new
render "new"
render "new.html.erb"

仮に、別のビューフォルダのテンプレートを指定したければ
render "フォルダ/テンプレート"とすれば良い。

例えば、

def create
  @user = User.new(user_params)
  if @user.save
    flash[:success] = "user success"
    redirect_to @user
  else
    flash.now[:danger] = "user fail"
    render :new
  end
end

このコードは、
trueならshow.htmlに遷移し、それに対応しているアクション(show)が発火する。
falseなら、new.htmlに遷移しnewアクションは発火しない。
というより、createアクションが発火したならば、規約通りcreate.htmlに飛ぶはずだ。
create.htmlが存在しないのでrenderによってnew.htmlに飛ばすということ。
createアクションが発火した結果。

この記事が気に入ったらサポートをしてみませんか?