🙄

[Rails] renderとは

2021/04/30に公開

renderとは、テンプレートのファイルを作成して、他のcontrollerやviewファイルでテンプレートを使い回すことができる部分テンプレート機能
ControllerとViewの両方で使用可能だが、使い方が異なる

①Controllerで使うrenderメソッド
・render action:同一コントローラ内の他のアクションに対応するviewを呼び出す

#app/views/admin/edit.html.erbを呼び出す
def update
  if @post.save
    redirect_to('/admin/index')
  else
    render action: :edit
end

・render layout:レイアウトを指定して呼び出す

def edit
  @article = Posts.find_by(id: params[:id])
  render layout: 'hoge'
end

・render template:別コントローラーのアクションに対応するviewを呼び出す

#app/views/home/indexを呼び出し、app/views/layouts/hoge.html.erbをレイアウトとして呼び出す
def preview
  render template: 'home/index', layout: 'hoge'
end

※ templeteやpartialなどを付けなくても指定可能

def update
    if @user.update(user_params)
      flash[:success] = "Successfully Update Your Profile !!"
      redirect_to root_url
    else
      render "edit"
    end
  end

②Viewで使うrenderメソッド
viewで繰り返し表示するパーツや、共通のパーツは部分テンプレートにまとめることが可能
「render partial: "呼び出すファイル名", locals:{ local変数(呼び出すファイル内で用いる変数名): 渡す値 }」で指定

  <div>
  <%= render partial: "title", locals: { title: post.title }%>
  </div>

※viewで渡すpartialファイルは頭に”_"をつける必要がある

Discussion