cd siliconvalley

I will startup at San Francisco !

Ruby on Rails Tutorialに挑戦中!Rails風味のRubyをこなしてみた!

どうも。本日は4章から続けていきたいと思います。
 
昨日は静的なページを生成するということで、
一つのページを生成する為には
・app/views/static_pages/***.html.erb ページのビュー
・config/routes.rb GETするページ
・app/controllers/static_page_controller.rb コントローラーで何をするかの定義
 
上記、3点が必要だということでした。
また、spec(テスト)で用いるspecがそのページで何をするか書く際には
it "should be the contents ’About Us’”と書くのですが、これは
翻訳すると、「それは' About Us 'を持っている必要がある」となります。
 
それでは、本日の章に入っていきます。
 
Railsでは、Rubyで必要な知識は限られているみたいです。つまり、Railsができると言って、Rubyを習得したということにはなりません。しかし、取り掛かりとしてフレームワークから入るのはいいですよね。
 
<%= stylesheet_link_tag "application" media: "all" "data-turbolink-track" => true %>
 
上記はapplication.html.erbのスタイルシート定義です。組み込み関数stylesheet_link_tagを利用して、application.cssをメディアタイプに全てインクルードしていることを指します。
 
レイアウトをシンプルなものとして採用する為に、ヘルパーを定義します。ヘルパーはviewをシンプルに表示する為に、別で定義する作業となります。
 
ちなみに、turbolinkの動作は下記のようになります。
1. リンクのclickイベントをフック
2. リンク先のページをXHRで取り寄せる
3. レスポンスをDOM化
4. 現在のページと取り寄せたページの外部JavaScriptファイルとCSSファイルが同一なら、titlとbodyを読み込んだページのもので置き換える
 
Railsには3つの環境がある
まず、$ rails cで開くことができる開発環境(development)、そしてアプリを開発していく本番環境(production)、さらにspecでテストがなされるテスト環境(test)があります。
 
※ この章では、Rubyコンソールを使ったRuby練習が行われていますが、Railsと直接関係がない為、省きます。
 
Rubyオブジェクト指向と呼ばれる言語です。オブジェクトは定義することによって、言葉そのものが組織的な意味を成すことです。
詳しくはこちらを参照にしてください。5分でわかります。
 
ここでは、メソッドの定義とクラスの定義をそれぞれさせて頂きます。
 
メソッド定義
 
def string_message string
// string_message をstring(文字列)で定義する
 if string.empty?
// もし文字列が空ならば
  "It's an empty string!"
// と表示する
 else
// そうでないならば
  "The string is noempty."
// と表示する
 end
end
 
> クラス定義
メソッドをまとめて、インスタンスを生成する
 
class World
 def palidrome?(string)
// palidrome(前から読んでも、後ろから読んでも同じ)かどうかを定義する
  string == string.reverse
// 文字列は文字列の反転と同じかどうか
 end
end
 
w = Word.new
// Wordオブジェクトを作成
w.palidrome?("foobar")
// これは誤り(=> falseと表示される)
w.palidrome?("level")
// これは正しい(=> trueと表示される)
 
それでは、Userのクラスを作成してみましょう!
 
- example.user.rb
 
class User
// Userクラスを定義していきます
attr_accessor :name, :email
// ユーザー名とメールアドレスに対応したアトリビュートアクセサー(クラスやモジュールにインスタンス変数を読み書きする為のアクセサメソッド)をそれぞれ作成
 
def initialize(attributes = {})
// initializeメソッドはattributesを引数に取ります
@name = attributes[:name]
@email = attributes[:email]
end
 
def formatted_email
// 名前とメールアドレスを割り当てられたものとして定義する
"#{@name} <#{@email}>"
end
end
 
それでは、次回からはまたsample_appに取り組んでいくみたいです。