Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.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 3 布局方法不';t将实例变量rails设置为3.2以后的版本_Ruby On Rails 3_Layout_Ruby On Rails 3.2_Actioncontroller - Fatal编程技术网

Ruby on rails 3 布局方法不';t将实例变量rails设置为3.2以后的版本

Ruby on rails 3 布局方法不';t将实例变量rails设置为3.2以后的版本,ruby-on-rails-3,layout,ruby-on-rails-3.2,actioncontroller,Ruby On Rails 3,Layout,Ruby On Rails 3.2,Actioncontroller,我正在开发一个rails应用程序,它正在从rails(3.0.9)升级到rails(3.2.22)。我将尝试通过rails应用程序演示这个问题 我为不同的rails版本创建了演示应用程序。我里面有这样的东西 class ApplicationController < ActionController::Base protect_from_forgery layout :select_layout def select_layout @tmp = 'tmp varia

我正在开发一个rails应用程序,它正在从rails(3.0.9)升级到rails(3.2.22)。我将尝试通过rails应用程序演示这个问题

我为不同的rails版本创建了演示应用程序。我里面有这样的东西

class ApplicationController < ActionController::Base
  protect_from_forgery

  layout :select_layout

  def select_layout
    @tmp = 'tmp variable'
    @layout = 'application'
  end
end
class ApplicationController
并访问@tmp insidelayouts/application.html.erb:-

<!DOCTYPE html>
<html>
  <head>
    <title>TwistageScopeIssue</title>
    <%= stylesheet_link_tag    "application", :media => "all" %>
    <%= javascript_include_tag "application" %>
    <%= csrf_meta_tags %>
  </head>
  <body>
    <%= yield %> <br/>
    <%= @tmp %> <br/>
  </body>
</html>

扭曲问题
“全部”%>


值(@tmp)在3.0.x和3.1.x中正确显示('tmp变量')

值(@tmp)设置为nil:3.2.x以后

我仍在研究rails源代码以获取一些信息,同时任何想法/想法都会非常有用


谢谢

在选择布局的方法中设置实例变量似乎有些奇怪。他们可能为了不违反柯利定律而把它拿走了。在过滤器前将其设置为
@dickeboy谢谢!!我已经试过了,效果很好。但是,它在现有的测试用例中失败得很惨,因此在开始修复它们之前,我一直在寻找建议。我仍在试图理解导致此更改的rails的更高版本中的更改。是否有其他/更好的解决方案解决此问题??在选择布局的方法中设置实例变量似乎有些奇怪。他们可能为了不违反柯利定律而把它拿走了。在过滤器前将其设置为
@dickeboy谢谢!!我已经试过了,效果很好。但是,它在现有的测试用例中失败得很惨,因此在开始修复它们之前,我一直在寻找建议。我仍在努力了解导致这一变化的rails更高版本中的变化。是否有其他/更好的解决方案来解决这个问题??