Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails实例变量可访问性内部布局_Ruby On Rails - Fatal编程技术网

Ruby on rails Rails实例变量可访问性内部布局

Ruby on rails Rails实例变量可访问性内部布局,ruby-on-rails,Ruby On Rails,这可能是一个愚蠢的问题,但我很想知道它是如何工作的。以下是场景: 控制器 def some_method @abc = true render :template => "show", :layout => "lightbox" end def some_method render :template => "show", :layout => "lightbox" end 现在,当我尝试访问layout内部的实例变量@abc时,结果是nil。但是,对于以

这可能是一个愚蠢的问题,但我很想知道它是如何工作的。以下是场景:

控制器

def some_method
  @abc = true
  render :template => "show", :layout => "lightbox"
end
def some_method
  render :template => "show", :layout => "lightbox"
end
现在,当我尝试访问layout内部的实例变量@abc时,结果是nil。但是,对于以下场景:

控制器

def some_method
  @abc = true
  render :template => "show", :layout => "lightbox"
end
def some_method
  render :template => "show", :layout => "lightbox"
end
查看(show.html.haml)

该变量可在布局内部访问

我的问题是:


为什么我在视图中定义一个实例变量不同,它在布局中是可以访问的,但是如果在控制器而不是视图中定义相同的变量,它不可访问,并且在第一种情况下为nil

在控制器操作中使用
render
时,它不会自动继承控制器操作范围。您必须将变量传递给
render
调用。比如:

render  :template => "show", :layout => "lightbox",  :locals => {abc: @abc}
在视图模板中,您可以访问包含控制器
@abc
变量内容的变量
abc
(无
@

在第二种情况下:当处理模板“show”时,rails正在视图范围内创建
@abc
变量。所以你可以访问它。

中提供的答案可以帮助您了解正在发生的事情。在第一种情况下,

也是一个很好的参考:在控制器操作中使用
渲染
时,它不会自动继承控制器操作范围。您必须将变量传递给
render
调用。比如:

render  :template => "show", :layout => "lightbox",  :locals => {abc: @abc}
在视图模板中,您可以访问包含控制器
@abc
变量内容的变量
abc
(无
@

在第二种情况下:当处理模板“show”时,rails正在视图范围内创建
@abc
变量。所以你可以访问它。

中提供的答案可以帮助您了解正在发生的事情。对您来说,

也是一个很好的参考,但是,它是零,这超出了我的理解,您应该能够在视图中访问控制器中定义的@abc变量。您能显示您的布局吗?在访问布局之前,您确定未分配
@abc
nil
。检查您的文档中的所有引用或
@abc
application@AmitPatel我肯定它不是零。顺便说一句,我使用byebug gem进行调试,并尝试使用Rails.logger.info检查变量,然后我猜您仍然缺少一些东西;否则,您不会问这个问题。但是,它是nil,这超出了我的理解,您应该能够在视图中访问控制器中定义的@abc变量。您能显示您的布局吗?在访问布局之前,您确定未分配
@abc
nil
。检查您的文档中的所有引用或
@abc
application@AmitPatel我肯定它不是零。顺便说一句,我使用byebug gem进行调试,并尝试使用Rails.logger.info检查变量,然后我猜您仍然缺少一些东西;否则,你不会问这个问题。