Step by Step Ruby on Rails

Ruby on Railsで実際にWebサイトを構築する手順をまとめています。

provide、content_forで文字列やブロックをレイアウトファイルに渡す

provideやcontent_forヘルパーメソッドを使って、文字列やブロックをレイアウトファイルに渡す方法についてです。
 
●構文
 
content_for(name, content = nil, options = {}, &block)
provide(name, content = nil, &block)
 
●設定例1
 
各ビュー固有のページタイトルをprovideヘルパーメソッドを使って記述し、タイトルタグをレイアウトファイルに記述する
 
・個別のビュー
<% provide(:title, '連絡先') %>
 
・レイアウトファイル

<html>
  <head>
  :
    <title>サイトタイトル | <%= yield(:title) %></title>
  :
  </head>
  <body>
    <%= yield %>
  </body>
</html>

 
●設定例2
 
権限がないユーザーに対して表示するアラートを多く場所で使用するため、content_forで設定しyieldで呼び出して使用する。

<% content_for :not_authorized do %>
  alert('You are not authorized to do that!')
<% end %>

<%= yield :not_authorized if current_user.nil? %>