假设我做了一个ajax调用,我想从中获得一些静态模板(app / views / static / some_template.html.erb),我想在这里使用一些存储在这里的javascript app/views/layouts/sign_in.js.erb
。是否可以渲染多个文件? (因为我想保留我的js文件和我的html文件)
def ajax_call
respond_to do |format|
...
format.js {render 'layouts/sign_in.js.erb'}
end
end
编辑:这是我的控制器
respond_to do |format|
format.js {render 'devise/sessions/new.html.erb'}
end
在devise/sessions/new.html.erb
中,我放了
<div> test</div>
<%= render "layouts/sign_in.js.erb" %>
并在layouts/sign_in.js.erb
中,我放了console.log('test');
答案 0 :(得分:2)
您可以将渲染放在partial中,并将文件分割到另一个级别:
def ajax_call
respond_to do |format|
...
format.js {render 'layouts/grouped_sign_in.js.erb'}
end
end
# in _grouped_sign_in.js.erb
<%= render 'layouts/sign_in.js.erb' %>
<%= render 'layouts/create_account.js.erb' %>
答案 1 :(得分:1)
您可以做的是以下
在您的控制器中
@template = ActionView::Base.new('app/views/static', {}, ActionController::Base.new).render(file: 'new').to_s
respond_to do |format|
format.js {render 'layouts/sign_in.js.erb'}
end
然后将@template
变量放回sign_in.js.erb
,<%= escape_javascript(@template) %>