心はいつも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
Ruby 1.9系をインストールする

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

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

8章で随分おなかいっぱいになりました。 第9章 ユーザーの更新・表示・削除、です …

no image
RailsTutorial4.0を高速で復習する。3.5章。最後の問題。

3.5演習、3もんめ、最後の問題です。 3.(上級者向け)「Heroku pag …

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

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

no image
いまだにユビキタスなSONYとクラウドに向かうApple

PS3のトルネが良さそう@ヤマダ電機。PS3本体とチューナーの2台になってスッキ …

iPhoneでのToDo&スケジュール管理アプリ決定しました

苦手なタスク管理のために読んだ2冊というエントリーが割と人気なのですが、いまだに …

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

3.3.3埋め込みRubyです。viewにrubyコードを埋め込んでtitleを …

no image
Railsの%

Rubyの%じゃなくてRailsの%です。 RailsではSQLを生成するwhe …

no image
テンプレとヘルパーの順番

http://yourdomain/actionxを呼んだときのactionx用 …

40秒も待てない。

自由が丘のカフェでこれ書きました。Table Modern Service、食べ …