心はいつもAirPucci (空元気でもいいから)

毎日がPucciを着ているような気分

RailsTutorial4.0を高速で復習する。4章と4.1章。

   


さて、4章です。4章ではRubyに関する内容が多かったような記憶が。

動的なWebアプリを作ることができればそれでよいというのであれば、まずRailsを学ぶようにし、Rubyについては当分の間、必要が生じた場合にのみ学習することをお勧めします

私は今、Railsもいいけどやっぱ書くならRubyをキチンとやらないと、という段階に来たので、
を読みながら、もう少し詳しく網羅的に知りたい時は

4.1動機、です。
viewのレイアウトに書いた
<%= stylesheet_link_tag "application", media: "all", "data-turbolinks-track" => true %>
を例に、Railsの組み込み関数に関する説明です。

Railsの組み込み関数を調べる

http://api.rubyonrails.org/によると、stylesheet_link_tagはRailsの組み込み関数ですね。これはviewに書いてあるからRailsの関数ってわかりやすいけど、modelとかcontrollerに書いてあるとRubyなのかRailsなのかわかんなくなります。いっこいっこ調べて覚えて行くしかないみたい。
http://railsdoc.com/ここは日本語かされているからこっちがいいかも。でもstylesheet_link_tagはありませんでした。

stylesheet_link_tag(*sources) Link

Returns a stylesheet link tag for the sources specified as arguments. If you don’t specify an extension, .css will be appended automatically. You can modify the link attributes by passing a hash as the last argument. For historical reasons, the ‘media’ attribute will always be present and defaults to “screen”, so you must explicitly set it to “all” for the stylesheet(s) to apply to all media types.

<%= stylesheet_link_tag "application", media: "all", "data-turbolinks-track" => true %>

<link data-turbolinks-track=”true” href=”/assets/application.css?body=1″ media=”all” rel=”stylesheet” />
になっていました。

ヘルパーメソッドを自分で作成する

viewで使える組み込み関数をヘルパーメソッドと言うのですが、ここでいきなり自作します。

リスト4.2 full_titleヘルパーを定義する。
app/helpers/application_helper.rb このファイルはあるので、中身に自作ヘルパーメソッドを書いて行きます。

module ApplicationHelper

  # ページごとの完全なタイトルを返します。
  def full_title(page_title)
    base_title = "Ruby on Rails Tutorial Sample App"
    if page_title.empty?
      base_title
    else
      "#{base_title} | #{page_title}"
    end
  end
end

ヘルパーメソッドはmoduleなんですね。
base_titleを”Ruby on Rails Tutorial Sample App”と定義し、page_titleは入力でもらう事にし、あれば|の続きに表示する、というヘルパーメソッドです。

自作ヘルパーメソッドを使ってレイアウト書き換え

リスト4.3 サンプルアプリケーションのWebサイトのレイアウト。
app/views/layouts/application.html.erb

<!DOCTYPE html>
<html>
  <head>
    <title><%= full_title(yield(:title)) %></title>
以下略

titleを自作ヘルパーメソッドfull_titleを使って書き換えました。

yeildが気になる

yeildは3.3.3章で出てきたのですが、ここで急にきになったので調べます。が、あまり説明がありません。
yeild

コントローラで処理された内容を埋め込む先(yield)

この文章わかりづらい。
コントローラーで、処理された内容を埋め込むけど、その埋め込み先
ってことでしょうか。
yield(:title)は3.3.3章でprovide関数を使って、各静的ページのページ名を:titleに割り当ててあります。その処理を、コントローラーがviewを呼び出すときに埋め込んでしまう、ってことでしょうか。
http://localhost:3000/static_pages/home が読み込まれたとき、contorollerはhomeのviewを呼び出すけどその時に、レイアウトのyield(:title)には、homeのviewでprovide(:title, ‘Home’)してあったのでyield(:title)をHomeに置き換えるってことですね。

そういうことだと想像してつぎ、進みます。

次は4.1章の途中から、
リスト4.4 Homeページのタイトル確認用にテストを更新する。からです。

ここは変だなと思っているところなんですよ。

 - テクニカル ,

Comment

  1. […] 4.1章のヘルパーメソッドを自分で作成するで、ヘルパーメソッドはmoduleだったことに気づいたのですが、 […]

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

  関連記事

no image
WindowsのiTunesからMacのiTunesへのデータ移行

MacBookAir 2日め。なかなかMacにふみきれなかったのは、Window …

no image
RailsTutorial4.0を高速で復習する。10.3.3章。

10.3.4マイクロポストを削除する、です。 仕様 マイクロポスト個別に削除でき …

no image
RailsTutorial4.0を高速で復習する。9.3章。

9.3すべてのユーザーを表示する、です。 いろいろ細かい実装するまえにこれやるべ …

no image
RailsTutorial4.0を高速で復習する。3.3.4章。

3.3.4レイアウトを使って重複を解消する、です。 ここでapplication …

no image
RailsTutorial4.0を高速で復習する。3.1章。

3.1章は静的ページの追加。これをトップページとして後で色々追加していきます。 …

no image
ブログデザイン変更しました

予告通り、本日中にブログのデザインを変更できました。WordPressのテーマT …

メタプログラミングRuby第1章

初めてのRuby2章と8章をやったところで、メタプログラミングRubyに進みます …

初めてのRuby8章 8.4特異メソッドと特異クラス

特異メソッドと特異クラス プログラムなんて、クラスの継承だけで書けてしまうのが良 …

no image
RailsTutorial4.0を高速で復習する。4.1章の途中から。

さて、4.1章の途中にある、変だなと思っている箇所、 リスト4.4 Homeペー …

GitにRailsプロジェクトをpushする

HomebrewerでGitをインストールし、Rails 3.2やRails4. …