🙄
[Rails] renderとは
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