【问题标题】:Variable not echo'ing out properly in RoR变量未在 RoR 中正确回显
【发布时间】:2011-06-08 22:53:48
【问题描述】:

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

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

助手看起来像这样:

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 用于主页。但是,它只呼应“主页”作为页面标题。

我在这里忽略了什么吗?我认为我没有输入任何错误或任何内容;对我来说,一切看起来都很合乎逻辑,但它不起作用。

非常感谢!

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 哦,呵呵。愚蠢的我,我没有看到他们删除了书中的@。谢谢!
    【解决方案2】:

    我认为你从书中抄错了。 (好在您遇到的问题在免费示例章节中。:)

    这本书实际上有的是:

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

    你拥有的是:

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

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

    【讨论】:

    • 呃。愚蠢的我,我确实很怀念那个小@被去了那里。哦,好吧,每个人都免费代表,哈哈。非常感谢您帮助我!感谢您解释没有 @ 的标题是一个方法调用;我自己永远不会得到它。
    猜你喜欢
    • 1970-01-01
    • 2013-07-23
    • 1970-01-01
    • 2017-10-24
    • 2020-01-11
    • 1970-01-01
    • 1970-01-01
    • 2020-12-02
    • 1970-01-01
    相关资源
    最近更新 更多