将变量传递给自定义模板 - rails

时间:2014-02-24 20:27:17

标签: javascript ruby-on-rails ruby

在我的控制器中,我存储了一个变量@template的某个视图,设置了一个测试变量并期望一些js响应

@template = ActionView::Base.new('app/views/devise/sessions', {}, ActionController::Base.new).render(file: 'new').to_s
@test="test"
respond_to do |format|
    format.js {render 'layouts/some_file.js.erb'}
end

然后我将此变量传递给some_file.js.erb并调用:

$("body").append('<%= escape_javascript(@template) %>');

假设在@tempate中我放了&lt;%= @test%&gt;,那么@test为空。为什么会这样?

1 个答案:

答案 0 :(得分:0)

在文档(http://apidock.com/rails/ActionView/Base/new/class)之后,ActionView::Base.new的第二个参数是assigns,它看起来像是locals选项。

@template = ActionView::Base.new('app/views/devise/sessions', { local_var: 21 }, ActionController::Base.new).render(file: 'new').to_s

变量local_var应该在相应的部分中可用。