【问题标题】:Why is my instance variable undefined in HAML view为什么我的实例变量在 HAML 视图中未定义
【发布时间】:2013-05-30 21:35:12
【问题描述】:

我不确定为什么我无法在文档或在线任何地方找到它,但如果我的控制器是:

# HomeController
class HomeController < ApplicationController
   def index
      @var = "A Sample Variable"
   end
end

..如果我的 HAML 视图使用 haml 布局并且看起来像这样:

/ index.html.haml
%p "This is a paragraph"
%p
   = @var

...为什么实例变量@var 从未显示?该段落在那里,但@var 始终为空。我知道这一点是因为调用 @var.split('') 会引发未定义的方法错误。我使用的 HAML 版本是 4.0.3。有什么想法吗?

【问题讨论】:

    标签: ruby-on-rails haml


    【解决方案1】:

    因为您的index 操作将呈现index.html.haml,而不是home.html.haml。你在那里渲染了错误的视图。

    【讨论】:

    • 试过了,但没有解决我的问题。也许这是我错过的一些小东西,因为我刚开始使用 haml ?
    • Haml 与 ERB 非常相似并且遵循相同的规则——只是标记风格不同。您是在向我们展示实际的失败代码,还是一个简化的示例?如果不是这样,您可能会错过实际代码中的某些内容。
    • 那是实际的代码,我希望我遗漏了一些东西,这样更容易弄清楚。我已经使用“rails generate controller home”生成了控制器,我得到的文件是一个 .erb 文件。我使用“html2haml”将该文件更改为 .haml 文件,然后编写了我在问题中显示的代码
    • 好吧,你是对的,我已经简化了代码。我还在控制器中包含了一个模块,即使没有显示任何错误,它也破坏了实例变量。我真的不敢相信,但谢谢!现在已经修好了。
    【解决方案2】:

    将视图文件名更改为index.html.haml,因为这是您定义实例变量的操作。或者,您也可以向控制器添加 home 操作并将 var 实例变量存储在那里,以便 home 模板可以访问它

    【讨论】:

    • 我这样做了。好像没修这可能是我错过的非常小的东西,也许我没有正确安装haml,或者我不知道。此时我才刚刚开始学习haml,所以很有可能我错过了对大多数人来说显而易见的东西。
    猜你喜欢
    • 1970-01-01
    • 2011-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-13
    • 1970-01-01
    • 2016-12-03
    相关资源
    最近更新 更多