我正在阅读 Michael Hartl 的 Rails 教程(Screen Cast)。遇到第 4 章中关于标题助手的问题。
我一直在对代码进行自己的修改,以确保我理解了这一切。然而,在这一个上,它非常相似,我不太确定它为什么会这样。
这是代码:
应用程序.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
主页.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