如何将渲染结果嵌入到 JavaScript 资产文件中?
How can I embed rendering result in a JavaScript asset file?
我有一个部分文件 /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 文件中呈现部分文件的正确方法是什么?
我发现现代的、正确的方法是使用在控制器 classes 上定义的 class 方法 render
。我能够使用以下代码做到这一点:
...
var foo = $('<%=ApplicationController.render partial: "shared/foo"%>');
...
我有一个部分文件 /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 文件中呈现部分文件的正确方法是什么?
我发现现代的、正确的方法是使用在控制器 classes 上定义的 class 方法 render
。我能够使用以下代码做到这一点:
...
var foo = $('<%=ApplicationController.render partial: "shared/foo"%>');
...