Ruby on Rails Tutorial (28)

朝練メモ。app/views/layout 配下確認します。
とりあえず application.html.erb から。一つづつ掘ります。とりあえず列挙から。head な記述が以下ですね。

<!DOCTYPE html>
<html>
  <head>
    <title><%= full_title(yield(:title)) %></title>
    <%= stylesheet_link_tag    "application", media: "all" %>
    <%= javascript_include_tag "application" %>
    <%= csrf_meta_tags %>
    <%= render 'layouts/shim' %>    
  </head>
  • full_title について確認
  • stylesheet_link_tag について確認
    • 引数の "application" とか option な引数とか
  • javascript_include_tag について確認
  • csrf_meta_tags について確認
  • _shim.html.erb はスルー

あるいは body な記述が以下。

  <body>
    <%= render 'layouts/header' %>
    <div class="container">
      <% flash.each do |key, value| %>
        <%= content_tag(:div, value, class: "alert alert-#{key}") %>
      <% end %>
      <%= yield %>
      <%= render 'layouts/footer' %>
      <%= debug(params) if Rails.env.development? %>
    </div>
  </body>
</html>
  • _header.html.erb 確認
  • flash.each.do な部分も確認のこと
  • _footer.html.erb 確認
  • debug な部分も確認のこと

ということで上から順に確認開始。

full_title について確認

どうもこのあたりはテキストの Chapter 5 のあたりな模様。これって自前で定義したのかなぁ。探してみると Chapter 4 で云々してますね。
(yield(:title)) というソレはそれぞれの partial の先頭で

<% provide(:title, 'About Us') %>

という形で設定してます。ええと、http://guides.rubyonrails.org/layouts_and_rendering.html を確認したところでは、content_for と対応して云々な記載がありますね。
ちなみに Chapter 3 Mostly static pages では

The code

<% provide(:title, 'Home') %>

indicates using <% ... %> that Rails should call the provide function and associate the string ’Home’ with the label :title.14 Then, in the title, we use the closely related notation <%= ... %> to insert the title into the template using Ruby’s yield function:15

<title>Ruby on Rails Tutorial Sample App | <%= yield(:title) %></title>

Chapter 3 Mostly static pages より引用
という記述がありますね。

stylesheet_link_tag について確認

以下を参照しつつ。

ということは以下は

    <%= stylesheet_link_tag    "application", media: "all" %>

こんなカンジに変換されるのかな。

<link href="/stylesheets/application.css" media="all" rel="stylesheet" type="text/css" />

これ、全部が、なのかなむむむ、と言いつつ以下なドキュメントを発見。

なんか色々凄いな。

時間切れ

現実トウヒ対応で追記があるかもしれません (を

javascript_include_tag について確認

app/assets/javascripts/application.js は以下な模様 (一部のみ)。

//= require jquery
//= require jquery_ujs
//= require bootstrap
//= require_tree .

これはルール的に stylesheet のソレと同様、なのかどうか。Gemfile に

gem 'jquery-rails', '2.0.2'

つーソレがあるんですが、一体これは、って言いつつ色々確認してたら ~/.rbenv 配下の jquery-rails-2.0.2/vendor/assets/javascripts 配下に居ますね。おそらくこれが云々されているということにしておきます。
つうか、以前は bundle install なソレって vendor 配下に、って思っていたのですが最近はそーではないのね。

csrf_meta_tags について確認

以下なカンジに変換されている模様。

    <meta content="authenticity_token" name="csrf-param" />
<meta content="CRfHVnuowm8BNu6ZlOoSmzhM2XOhEAJo9Wf9wqTWlWA=" name="csrf-token" />

csrf 対策、とのこと。