变量不能在RoR中正确回显

时间:2011-06-08 22:53:48

标签: ruby-on-rails ruby-on-rails-3 helper

我正在跟随Rails Tutorial开始使用Ruby on Rails(第4000次)。我几乎已经开始讨论前几章,因为我已经阅读并输入了很多次,但我遇到了一个我似乎无法解决的小问题。

在其中一章中,建议我们创建一个辅助函数,使页面标题的显示更具动态性。

助手看起来像这样:

module ApplicationHelper

  #return title on per page basis
  def title
    base_title = "Ruby on Rails Tutorial Sample App"
    if @title.nil?
      base_title
    else
      "#{base_title} | #{@title}"
    end
  end
end

我的控制器看起来像这样:

class PagesController < ApplicationController
  def home
    @title = "Home"
  end
  # more pages
end

最后,我的应用程序布局文件包含以下行:

  <title><%= @title %></title>

书中说它现在应该“回应”(这是PHP语言?Tee-hee)以下标题:

Ruby on Rails Tutorial Sample App | Home主页。但是,它只将'Home'作为页面标题回显。

我在这里俯瞰什么吗?我不认为我输入任何错误或任何东西;一切对我来说都是合乎逻辑的,但它不会起作用。

非常感谢!

2 个答案:

答案 0 :(得分:3)

在视图中调用@title是指变量,而不是方法。由于变量@title等于“Home”,这就是你得到的。要调用该方法,您应该尝试类似:

<title><%= title %></title>

答案 1 :(得分:1)

我认为你错误地从书中复制了。 (你遇到的问题好处在于免费样本章节。:)

实际的书是:

<title><%= title %></title>

你拥有的是:

<title><%= @title %></title>

使用@,直接查找变量。如果没有@,则会调用方法title()。 (我希望他们在函数调用之后放置(),但惯用的Ruby。我只是不喜欢Ruby习语。)