##基本形
app/views/messages/index.html.haml
.menu
= render "layouts/menu"
// これはlayoutsフォルダにある_menu.html.hamlにいく
.view
= render "view"
///これは同じmessagesフォルダにある_view.html.hamlにいく
##オプションをつける場合
例)
app/views/messages/index.html.haml
= render partial: "view", layout: "exemption"
//部分テンプレート_view.html.hamlにいくが、レイアウトはexemptionが適用される。
app/views/messages/index.html.haml
= render partial: "view", locals: { message: @message }
//部分テンプレート_view.html.hamlにいき、partial側ではローカル変数messageで@messageを参照できる。
locals:だけであれば下記のように記載することもできる
app/views/messages/index.html.haml
= render "view", message: @message
*省略形で書く場合、partialとlocalsの両方とも省略形で書く必要がある。(片方だけ省略形はダメ)
*:layoutや:templateなどのオプションをつける場合は、partial:は省略できない。
##アクションに飛ばす場合
app/messages_controller.rb
def create
@message = Message.new(message_params)
if @message.save
redirect_to messages_path(@message)
else
render :new
end
end
//上記では@messageが保存できなかった場合、
app/views/messages/new.html.hamlへ飛ぶ
//その場合、入力していた値は保持されている!(newアクションに飛ぶわけではない)
```
##まとめ
"renderを初めて見たときの形が、render partial: "xxx"の形式だったので、
「部分テンプレート = render partial」という固定観念ができていた。
しかし実際にはオプションが不要であればrender "xxx"だけで飛ばすことができるので、
省略できるものは省略し、無駄な作業やタイプミスを減らしたい。