如何将渲染结果嵌入到JavaScript资产文件中?

时间:2018-11-06 09:10:39

标签: ruby-on-rails asset-pipeline erb

我有一个部分文件/app/views/shared/_foo.html.slim,我想使用ERB将渲染结果嵌入到/app/assets/javascript目录中的JavaScript文件中。 (结果是一个HTML字符串,我将使用它来创建jQuery对象。)

我尝试了以下操作:

application.js.erb

...
var foo = $('<%=render partial: "shared/foo"%>');
...

但是它引发了一个错误:undefined method `abstract?',所以我试图加载一些视图助手:

...
<%Sprockets::Context.send :include, ActionView::Helpers%>
var foo = $('<%=render partial: "shared/foo"%>');
...

,但会引发相同的错误。我不确定这是否是继续以这种方式添加所需文件的正确方法,如果是,应该加载哪些文件。

在JavaScript ERB文件中呈现部分文件的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

我发现了一种现代且正确的方法是使用在控制器类上定义的类方法render。我能够使用以下代码来做到这一点:

...
var foo = $('<%=ApplicationController.render partial: "shared/foo"%>');
...