心はいつも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

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

  関連記事

MacBookAirの容量が足りない

当ブログairpucciで人気なのがMacBookAirに関するエントリ。ありが …

no image
retweetボタンを追加してみました

最近いろんなブログで見かけるretweetボタン。ブログのエントリーについている …

RailsTutorial4.0を高速で復習する。7章

第7章ユーザー登録、です。 6章でuserモデルを作ったので、7章はwebでの登 …

iPadのiBooksで自炊とかしたPDFの電子書籍を読む

手順覚えないのでブログに書きます。 Bookscan使用して手持ちPDF電子書籍 …

no image
Ruby 1.9系をインストールする

Rubyのバージョン管理ができるrbenvをインストールしたらいよいよRubyの …

no image
MacBookAirは壊れるの?

1ヶ月ぶりにWindows機を立ち上げています。HDDのカリカリ言う音が冷や汗も …

no image
RailsTutorial4.0を高速で復習する。5.6章。演習3問目。

5章最後の演習、3問目です。 リスト5.38に示すように、元のヘルパーメソッドに …

no image
IBActionのIBって?

railsもやってますが、xcodeも再開しています。 ところで、 IBActi …

no image
rbenvとruby-buildのインストール

諸々のものをインストールしたら、次はHomebrewを使ってrbenvとruby …

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

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