渲染多个文件 - rails

时间:2014-02-24 14:17:39

标签: javascript ruby-on-rails ruby rendering

假设我做了一个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');

2 个答案:

答案 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) %>