我正在跟随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'作为页面标题回显。
我在这里俯瞰什么吗?我不认为我输入任何错误或任何东西;一切对我来说都是合乎逻辑的,但它不会起作用。
非常感谢!
答案 0 :(得分:3)
在视图中调用@title是指变量,而不是方法。由于变量@title等于“Home”,这就是你得到的。要调用该方法,您应该尝试类似:
<title><%= title %></title>
答案 1 :(得分:1)
我认为你错误地从书中复制了。 (你遇到的问题好处在于免费样本章节。:)
实际的书是:
<title><%= title %></title>
你拥有的是:
<title><%= @title %></title>
使用@
,直接查找变量。如果没有@
,则会调用方法title()
。 (我希望他们在函数调用之后放置()
,但是惯用的Ruby。我只是不喜欢Ruby习语。)