LoginSignup
91
94

More than 5 years have passed since last update.

Railsのrenderの使い方

Last updated at Posted at 2017-01-24

基本形

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"だけで飛ばすことができるので、
省略できるものは省略し、無駄な作業やタイプミスを減らしたい。

91
94
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
91
94