Ruby on rails 使用全局变量将内容从render_输出到_字符串

Ruby on rails 使用全局变量将内容从render_输出到_字符串,ruby-on-rails,ruby,controller,erb,Ruby On Rails,Ruby,Controller,Erb,我在一个控制器中,我有一个方法,将信息保存在全局变量中,如下所示 @var = "test" 现在,当我想渲染视图文件时,我使用以下代码 MyController.new.render_to_string(:template => 'folder/file.erb', :layout => false) 我遇到的问题是,由于某种原因,文件.erb内部无法访问变量@var。守则如下: <% @var.each do |v| %> <% end if !@var.

我在一个控制器中,我有一个方法,将信息保存在全局变量中,如下所示

@var = "test"
现在,当我想渲染视图文件时,我使用以下代码

MyController.new.render_to_string(:template => 'folder/file.erb', :layout => false)
我遇到的问题是,由于某种原因,文件.erb内部无法访问变量@var。守则如下:

<% @var.each do |v| %>

<% end if !@var.nil? %>


返回null作为其内容。如何修复此问题?

我认为您应该将其作为本地文件传递:
MyController.new.render_to_字符串(:template=>'folder/file.erb',:layout=>false,:locals=>{:var=>@var)

然后它将作为局部变量
var
(无
@
)进行访问

如果你想让Rails变魔术,你应该在定义
@var
的地方指出一个动作:
MyController.new.render_to_string(:template=>'folder/file.erb',:layout=>false,:action=>'your_action_name')
因此Rails将能够在视图中重用您的变量