1

我正在尝试使用 UJS 触发表单提交:

  <%= f.file_field :profile_image,
                   direct_upload: true,
                   accept: 'image/png,image/gif,image/jpeg',
                   onchange: "Rails.fire(this.form, 'submit')"
  %>

但是,我在 JS 控制台中看到以下错误:

ReferenceError: Can't find variable: Rails

应用程序布局文件指向应用程序 JS 包:

<%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>

我可以看到它通过控制台日志的输出加载:

console.log('Application pack loaded')
require("@rails/ujs").start()
require("turbolinks").start()
require("@rails/activestorage").start()
require("channels")
require("@rails/activestorage").start()

据我了解,rails ujs 应该公开该Rails对象。那正确吗?

为什么Rails浏览器无法使用该变量?我需要做什么来确保它是?

4

1 回答 1

7

我从针对 Rails 6.0rc1 提出的这个问题中了解到,我需要自己公开该Rails对象。我错误地认为它可以开箱即用。或许在 Rails 使用资产管道时确实如此。

我可以Rails通过将其添加到我的包中来访问该对象:

import Rails from "@rails/ujs";
window.Rails = Rails;
于 2020-01-12T14:33:47.933 回答