Railsガイドにきちんと目を通して新しい知識を得る - レイアウトとレンダリング編 -

ドキュメントを読み込むのは大事、ということでRailsガイドを頭から読んでいく取り組みをしています。 各章ごとに、(Railsガイドにちゃんと書いてあるのに)知らなかった機能を雑にまとめていきます。

今回は、レイアウトとレンダリングの章です。

railsguides.jp

render inline

リンクはこちら

ガイドの中でも「このオプションを実際に使う意味はめったにありません。」と記載がありますが、コントローラでerbを直接記載できます。

class BooksController < ApplicationController
  def index
    @books = Book.all
    render inline: "描画しました<br><%= @books %>"
  end
end

描画された画面

レイアウトの探索順序

リンクはこちら

例えば/books/のURLであれば、app/views/layout/books.html.erbのレイアウトが一番優先で使われる。

renderでコレクションがない場合はnilを返す

リンクはこちら

コレクションがない場合にnilを返すので||を使って、データがない場合の処理が書けるのは知らなかった。

<%= render(@books) || 'データはありません' %>

今までは↓みたいに書いていたの1行で簡単に書けるのは嬉しいです。

<% if @books.exists? %>
  <%= render @books %>
<% else %>
  データはありません
<% end %>