Rails で content_for と yield を使ってみる
Ruby Ruby on Rails
Published: 2019-07-25

やったこと

Rails で content_for と yield を使ってみます。

確認環境

$ ruby --version
ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-darwin17]

$ rails --version
Rails 5.2.3

調査

app/views/layouts/application.html.erb

<!DOCTYPE html>
<html>
  <head>
    <title><%= yield :my_title %></title>
    <%= csrf_meta_tags %>
    <%= csp_meta_tag %>

    <%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track': 'reload' %>
    <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>
  </head>

  <body>
    <%= yield %>
  </body>
</html>

app/views/tasks/new.html.erb

<% content_for :my_title do %>my title!!!<% end %>

app/controllers/tasks_controller.rb

class TasksController < ApplicationController
  def new
  end
end

http://localhost:3000/tasks/new にアクセスして確認すると、

title タグに content_for で指定した文字が表示されていることが分かります。

参考