我正在浏览Michael Hartl的Rails教程(Screen Cast)。进入第4章关于标题助手的问题。
我一直在对代码进行自我扭曲,以确保我理解这一切。然而在这一个我非常相似,我不太清楚为什么它按照它的方式行事。
以下是代码:
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
答案 0 :(得分:0)
我好像你的full_title
辅助方法的最后一行有问题,因为如果page_title
为空,它不会返回任何内容(所有发生的都是局部变量{{1}被分配)。尝试将其更改回written in the book状态并查看其是否有效。