我正在学习Rails教程,开始使用RubyonRails(第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
。然而,它只将"主页"作为页面标题。
我是不是在俯瞰什么?我想我没有输入任何错误或任何东西;在我看来,一切都很合乎逻辑,但它不会起作用。
非常感谢!
在视图中调用@title是指变量,而不是方法。由于变量@title等于"Home",这就是您得到的。要调用该方法,您应该尝试以下操作:
<title><%= title %></title>
我想你把书抄错了。(好在你遇到的问题在免费样本章节中。:)
这本书实际上有:
<title><%= title %></title>
您拥有的是:
<title><%= @title %></title>
对于@
,它直接查找变量。如果没有@
,它将调用方法title()
。(我希望他们把()
放在函数调用之后,但是惯用的Ruby。我只是不喜欢Ruby惯用语。)