在我的控制器中,我存储了一个变量@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
为空。为什么会这样?
答案 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
应该在相应的部分中可用。