Rails教程第4章第2版。标题助手没有被召唤出来

时间:2012-06-30 22:31:10

标签: ruby-on-rails-3.2 title helper railstutorial.org

我正在浏览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

1 个答案:

答案 0 :(得分:0)

我好像你的full_title辅助方法的最后一行有问题,因为如果page_title为空,它不会返回任何内容(所有发生的都是局部变量{{1}被分配)。尝试将其更改回written in the book状态并查看其是否有效。