0

您好,我对 ruby​​ on rails 完全陌生。

我收到此错误:未定义的局部变量或方法“hej”

在我的 application.html.erb 我有:

 <%=hej%>

在 application.controller 我有这个:

class ApplicationController < ActionController::Base
    def index
       hej = "Hej hans" #also tried @hej = "Hej hans"
    end
end

__URL/主页/索引

4

2 回答 2

5

您在控制器中将 hej 设置为局部变量,因此它在视图中不可用。当您使用 = 为其赋值时,方法中的非大写单词(如此处的“hej”)将被视为局部变量。如果你想让它对其他方法可用,并且在 Rails 中对视图可用,你需要通过调用它'@hej' 而不仅仅是'hej'来使它成为一个实例变量。要在 Rails 的视图中调用该实例变量,您需要使用它的全名“@hej”——@ 符号很重要。

需要是:

def index
  @hej = "Hej hans"
end

在视野中

<%= @hej %>
于 2013-03-24T09:19:50.830 回答
2

hej是一个局部变量。它们只存在于它的范围内(当前块) - 并且对您的视图不可用。

@hej是一个实例变量 - 可用于类中的所有方法。它也可供您查看。您还需要在视图中使用@hej 调用它。

您需要在 hej 变量 (@hej) 中添加一个 @。

于 2013-03-24T09:28:25.503 回答