Ruby on rails 3 布局方法不';t将实例变量rails设置为3.2以后的版本
我正在开发一个rails应用程序,它正在从rails(3.0.9)升级到rails(3.2.22)。我将尝试通过rails应用程序演示这个问题 我为不同的rails版本创建了演示应用程序。我里面有这样的东西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
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更高版本中的变化。是否有其他/更好的解决方案来解决这个问题??