私はMichael HartlのRuby on Rails 3.2チュートリアルを見ていますが、4.1.1節で見つかったタイトルヘルパーが失敗しない理由について混乱しています。RoRチュートリアルChapter 4.1.1、なぜタイトルヘルパーが失敗しないのか混乱している
彼はあなたがビューからのコードのこのビットを除外イベントでタイトルヘルパーを必要と語る:
<% provide(:title, 'Home') %>
しかし、アプリケーションのレイアウトファイルに次の行があります:
<title><%= full_title(yield(:title)) %></title>
提供は、:titleシンボルに値を設定していないので、それはfull_titleヘルパーにnilの値を渡しませんか?
def string_message(string)
if string.empty?
"It's an empty string!"
else
"The string is nonempty."
end
end
これはさらに私を混同:
後の章で、彼はfull_title関数と同じであるレールコンソールに入力された例があります。コンソールで
は、私が入力した場合:
string_message("")
が、私は"It's an empty string!"
string_message("something")
を取得し、その後、私はArgumentError: wrong number of arguments (0 for 2..3)
- を取得し、その後、私は
NoMethodError: undefined method 'empty?' for nil:NilClass
string_message(test)
を取得し、その後、私は"The string is nonempty."
string_message(nil)
を取得しますstring_message(:test)
それから私はを得る
したがって、定義されていないシンボルを渡してもnil値は返されません。しかしそれも空ではないのですか?なぜそうではありません:タイトルは空ではないとして扱われますか?誰かが私にこのことを明確にすることができれば、それは素晴らしいことだ。
"未定義のシンボル" とは? –