Rails チュートリアル 第4章 まとめ
問題提起
トップページには Home | Ruby ---ではなくて、 Ruby ----がベター
→トップページのみ | なしで基本タイトルのみ表示、それ以外はHome | Rのように表示したい
解決策
Helperメソッドで対処、generateで生成されるもので、便利そうなものを置いておく場所
Helperメソッドの実装、このときRubyの文法がわからないとコードが書けない
module ApplicationHelper
# ページごとの完全なタイトルを返します。
def full_title(page_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
これをapplication.html.erbで、<%= full_title(yield(:title)) %> のように使う
もし、full_titleに追加タイトルありが入ってくれば、full_title(Help)となるので、if-else文はpage_title=Helpからemptyではないので、elseに行き、Help | Ruby on--- が表示される
もし、full_titleに""が入ってくれば、trueなのでRuby on ---だけが表示される
オプション引数で""を指定しているので、home.htmlからprovideを消してもいい
full_title(yield(:title)が実行された場合、yield(:title)がなければオプション引数の""が実行されるから(ここの論理の流れは要復習)
Ruby----
Rubyの世界では、あらゆるものがオブジェクト
オブジェクトにメッセージを投げたら、そのオブジェクトが受け答えしてくれる
例えば
"foobar".length
=> 6
foobarという文字列オブジェクトに長さは何かというメッセージ(length)を投げたら、6というメッセージを返してくれる
1.to_s "foobar".reverseも同様
nil、true、falseもオブジェクト、オブジェクトであればメッセージの受け渡しができるから
こうしたあらゆるものがオブジェクトである言語を、オブジェクト指向という
Rubyの思想、and or unless 人間のやりたいことをコンピュータが推測してくれ
自由 インデントで強制をかけない
irbとRails consoleは少し違う(.secondなど、railsであったらいいと思う機能も用意されている)
eachは万能だが、配列を作りたいならmapのように細かいブロック付きメソッドは用意されている
ハッシュ {}
キーと値、タンスのラベルと中身でイメージする
user["name"] = "---"
実際は、ラベルとして文字列オブジェクト"name"を使わず、シンボルオブジェクト:nameを使う
user[:name] = "---"
シンボルを使う理由は、文字列はオブジェクトが毎回変わるのでコンピュータにその場所を毎回調べてもらう必要があってコストがかかる。シンボルは数字と同様に、オブジェクトの場所が変わらないので、コンピュータにとって負担が少なく、それでいて数字よりも中身を人間が理解しやすいので、ラベルで使われる
オブジェクトの場所はuser[:name].object_idで調べることができる
組み込みクラスの変更を許容、よくわからない
Author And Source
この問題について(Rails チュートリアル 第4章 まとめ), 我々は、より多くの情報をここで見つけました https://qiita.com/ryosei_y/items/82c70724d68a04b73d50著者帰属:元の著者の情報は、元の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 .