在我的 Controller 中,我在变量 @template
中存储了一些 View ,设置了一个测试变量并期望一些 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
中我放了<%= @test %>,那么@test
为null。为什么会这样?
最佳答案
根据文档 (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
应该在相应的部分可用。
关于javascript - 将变量传递给自定义模板 - rails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21998288/