1

我正在阅读 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
4

1 回答 1

0

我似乎你的full_title帮助方法的最后一行有问题,因为如果它是空白的,它不会返回任何东西page_title(所有发生的事情就是full_title分配了局部变量)。试着把它改回书中的写法,看看它是否有效。

于 2012-07-01T21:11:13.633 回答