心はいつも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
あんたのrakeは新しいけど古いのが必要なんだよっ!!と怒られた

Mavericksってrubyが2.0になったんですね。 てのはおいといて、 r …

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

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

no image
railsのエラーメッセージを日本語化

message:で渡すエラーメッセージや、その他いろんな箇所を日本語化します。 …

no image
ブログのデザイン開発、着手から完成まで今日1日でやります

久々のブログです。 昨日アクセス解析も1年ぶりに見たのですが、何がなくとも一定の …

使ったらダメなiPhoneケーブル

iPhoneのApple純正ケーブルって、はげやすくないですか?iPhone5用 …

no image
gamilアカウントが乗っ取られました

朝起きてすぐ行うメール確認。iphoneでgmail接続できないってエラーが出る …

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

9.1.2編集の失敗、です。 テストを書きます リスト9.9 ユーザーupdat …

no image
RailsのRoutingいろいろ

コントローラーがAbc アクションがactrionxだとして、 http://y …

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

3.6高度なセットアップ、です。 この節を飛ばしても次の章以降には何の影響もあり …

RailsGirls松江からのぉ〜東京More!*既に2回目

RailsGirls東京3回目に申し込みそびれた流れから松江に参加し、チューター …