轨道上的红宝石 - 变量在 RoR 中未正确回显



我正在学习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惯用语。)

相关内容

  • 没有找到相关文章

最新更新