rails-tutorial第4章
helperメソッドとは
便利そうなメソッドをhelperに定義しておいてそれを呼び出す。
module ApplicationHelper
# ページごとの完全なタイトルを返します。
def full_title(page_title = '')
base_title = "Ruby on Rails Tutorial Sample App"
if page_title.empty?
base_title
else
page_title + " | " + base_title
end
end
end
これにより、page_titleが空の場合は、縦棒をいれずにbase_titleだけをタイトルタグに入れることができる。
<!DOCTYPE html>
<html>
<head>
<title><%= full_title(yield(:title)) %></title>
<%= csrf_meta_tags %>
<%= stylesheet_link_tag 'application', media: 'all',
'data-turbolinks-track': 'reload' %>
<%= javascript_include_tag 'application',
'data-turbolinks-track': 'reload' %>
</head>
<body>
<%= yield %>
</body>
</html>
titleタグを先ほどhelperに定義したdef full_title(page_title = '')を使って実装している。
yield(:title)によりprovide(:title, "About")のように定義したタイトルを参照できる。
provideとyieldはセットで考える。
pry
irbを拡張したものとしてpryという機能がある。
これはgemをインストールすることで使うことができる。
$ gem intall pry
$ pry
このコマンドにより、pryを使える。
putsメソッドについて
[3] pry(main)> puts 'foo'
foo
=> nil
上記のnilは計算の結果を返している。そのため、putsはfooを出力するがメソッド自体は何も返さない。
?の付くメソッド
?の付くメソッドは基本的にtrue か falseを返すようになっている。
自分でメソッドを定義するときもそれを気をつけながら定義する。
nilと''の違い
nilをto_sメソッドで文字列にしたものが''
つまり、''は0文字の文字列である。
Ruby(オブジェクト指向スクリプト言語)について
Rubyはメソッドを呼び出すという言い回しをしているが、実は少し違う。
オブジェクト指向スクリプト言語は、オブジェクトとのメッセージのやりとりだと考える。
[18] pry(main)> 'foobar'.length
=> 6
上記は、foobarの文字列は何文字?
俺は6文字だよー
という会話で成り立っている。
ブロックの考え方
>> (1..5).each { |i| puts 2 * i }
2
4
6
8
10
=> 1..5
ブロック付きメソッドはメソッドの引数にRubyの処理を渡していると考えるとわかりやすい。
メソッドチェーンについて
[20] pry(main)> %w[foo bar baz].map { |i| i.upcase }.join
=> "FOOBARBAZ"
このようにメソッドで評価された値にさらに . でメッセージを与えることをメソッドチェーンという。
ハッシュでなんでシンボルを使うのか?
[30] pry(main)> 'name'.object_id
=> 23088500
[31] pry(main)> :name.object_id
=> 88028
[32] pry(main)> 'name'.object_id
=> 24142460
[33] pry(main)> :name.object_id
=> 88028
文字列オブジェクトはオブジェクトidが毎回違う。整数はオブジェクトidが毎回同じ。ただ、シンボルにすると、object_idが毎回同じになっている。
labelとしてシンボルオブジェクトを使うと毎回同じなので毎回計算する必要がない。シンボルは人間にもわかりやすい表現ができ、整数のように計算するコスト削減ができパソコンにも優しいということ。
ハッシュの省略記法
[34] pry(main)> h1 = {:first => 'yokota', :second => 'daiki' }
=> {:first=>"yokota", :second=>"daiki"}
[35] pry(main)> h1
=> {:first=>"yokota", :second=>"daiki"}
[36] pry(main)> h2 = { first: 'yokota', second: 'daiki' }
=> {:first=>"yokota", :second=>"daiki"}
[37] pry(main)> h2
=> {:first=>"yokota", :second=>"daiki"}
シンボルを右側に書き、=>を省略した形で書くことができる。
classもオブジェクトの1つ
Rubyではあらゆるものがオブジェクトである。それはclassも例外ではない。
Stringにclassをするとclassクラスということがわかる。
Classクラスにsuperclassをするとmoduleクラスということがわかる。
また自分でクラスを定義するとき、親クラスに何も指定しないと、デフォルトでObjectクラスが継承される。
Author And Source
この問題について(rails-tutorial第4章), 我々は、より多くの情報をここで見つけました https://qiita.com/yd43star/items/63e29d63433f4f987f33著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .