use*_*603 1 ruby-on-rails rails-ujs ruby-on-rails-6
我正在尝试使用 UJS 触发表单提交:
<%= f.file_field :profile_image,
direct_upload: true,
accept: 'image/png,image/gif,image/jpeg',
onchange: "Rails.fire(this.form, 'submit')"
%>
Run Code Online (Sandbox Code Playgroud)
但是,我在 JS 控制台中看到以下错误:
ReferenceError: Can't find variable: Rails
Run Code Online (Sandbox Code Playgroud)
应用布局文件指向应用JS包:
<%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
Run Code Online (Sandbox Code Playgroud)
我可以看到它通过控制台日志的输出加载:
console.log('Application pack loaded')
require("@rails/ujs").start()
require("turbolinks").start()
require("@rails/activestorage").start()
require("channels")
require("@rails/activestorage").start()
Run Code Online (Sandbox Code Playgroud)
据我了解,rails ujs 应该公开Rails对象。那正确吗?
为什么该Rails变量对浏览器不可用?我需要做什么来确保它是?
我从针对 Rails 6.0rc1 提出的这个问题中了解到,我需要自己公开Rails对象。我错误地认为它可以开箱即用。也许当 Rails 使用资产管道时它确实如此。
我可以Rails通过将它添加到我的包中来访问该对象:
import Rails from "@rails/ujs";
window.Rails = Rails;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1235 次 |
| 最近记录: |