将实例变量传递给 webpacker JS

Passing instance variable to webpacker JS

在 Rails 应用中,是否可以将当前实例变量传递给通过 webpacker(不是 sprockets)加载的 javascript 文件? 这可能会阻止我通过执行以下操作将数据传递给基于组件的框架,如 Vue:

const el = <%= @employees.to_json %>

我的想法是简化它,这样我就不需要将 Rails 用作 API,同时仍然向前端框架提供数据。 将数据放入 div 或将表格放入 HTML 的想法对我来说似乎很混乱。 我什至想如果我可以创建一个加载到 sprocket 上的空 javascript 文件,我只创建变量,然后将其加载到使用 webpack 加载的文件中,但它仍然可能过度工程......有人可以帮助我吗?

你能"respond with javascript"吗?

在你的控制器中,你会有这样的东西:

def index
 @employees = Employees.all # Load data
 respond_with do |format|
    format.html
    format.js
  end
end

那么你会得到 index.js.erb:

const el = <%= @employees.to_json %>

但是使用 Rails 作为 API

您还可以将 javascript 变量放入 HTML

中的 <script> 标记中

也许 gon gem could help. Railscast。 只需在控制器中设置变量:

gon.employees = @employees.to_json

它将在 js 上可用 gon.employees