Michael Hartl (Screen Cast) による Rails チュートリアルを実行しています。タイトル ヘルパーに関する第 4 章の and の問題に遭遇しました。
すべてを確実に理解できるように、コードに独自のひねりを加えています。しかし、これについては非常によく似ており、なぜこのように動作しているのかよくわかりません。
コードは次のとおりです。
Application.html.erb
<!DOCTYPE html>
<html>
<head>
<%- Rails.logger.info("Testing: #{yield(:title)}") %>
<title><%= full_title(yield(:title)) %></title>
<%= stylesheet_link_tag "application", :media => "all" %>
<%= javascript_include_tag "application" %>
<%= csrf_meta_tags %>
</head>
<body>
<%= yield %>
</body>
</html>
Application_helper.rb
module ApplicationHelper
def full_title(page_title)
full_title = "Ruby on Rails Tutorial App"
full_title += " | #{page_title}" unless page_title.blank?
end
end
Home.html.erb
<h1><%= t(:sample_app) %></h1>
<p>
This is the home page for the <a href="http://railstutorial.org/">Ruby on Rails Tutorial</a> sample application
</p>
about.html.erb
<% provide(:title, t(:about_us)) %>
<h1><%= t(:about_us) %></h1>
<p>
The <a href="http://railstutorial.org/">Ruby on Rails Tutorial</a> is a project to make a book and screencast to teach web development with <a href="http://railstutorial.org/">Ruby on Rails</a>. This is the sample application for the tutorial.
</p>
何が起こるか: about ページのように提供メソッドを設定すると、コードは正常に動作します。しかし、そうしないと、ヘルパーを呼び出すことさえないようです。タイトルが返されないためだと思います。私が間違っていることについてのアイデアはありますか?
ご協力ありがとうございました。
編集:これは修正です。最後の行が何も返さず、それが私のコードが機能しない理由であると指摘してくれた Paul に感謝します。大文字と小文字を区別しないものを返すように変更しました。
Application_helper.rb
module ApplicationHelper
def full_title(page_title)
full_title = "Ruby on Rails Tutorial App"
page_title.present? ? (full_title += " | #{page_title}") : full_title
end
end