2014-02-24 42 views
2

在我的控制,我在一個變量@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我把<%= @test%>,然後@test爲空。爲什麼這樣?

+0

因爲您的上下文不提供對@test變量的訪問 – MrYoshiji

+0

好吧我理解得更好,有沒有辦法做到這一點? – user1611830

+0

閱讀文檔:http://apidock.com/rails/ActionView/Base/new/class第二個參數是賦值,它應該聽起來像一個提示 – MrYoshiji

回答

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應該在相應的部分中可用。