Dan*_*G2k 5 ruby-on-rails webpacker rails-ujs
我刚刚开始一个简单的 Rails 6.0.3.1 项目。
我正在设置 Devise 操作,但注销链接似乎不起作用。尽管我指定了方法,但它正在执行GET请求而不是:DELETE
- if user_signed_in?
= link_to 'Logout',
destroy_user_session_path,
class: 'button is-light',
method: :delete
Run Code Online (Sandbox Code Playgroud)
单击链接会产生:
控制台中没有错误:
我的app/javascript/packs/application.js看起来像这样:
- if user_signed_in?
= link_to 'Logout',
destroy_user_session_path,
class: 'button is-light',
method: :delete
Run Code Online (Sandbox Code Playgroud)
所以 Rails ujs 应该拦截链接点击并执行 a DELETE,但事实并非如此。
我的config/webpack/environment.js看起来像这样:
require("@rails/ujs").start()
require("turbolinks").start()
require("@rails/activestorage").start()
require("channels")
Run Code Online (Sandbox Code Playgroud)
我尝试在其他 SO 线程上寻找解决方案,但没有找到有效的方法。有些人建议使用按钮而不是链接,但我想要链接而不是按钮。
我通过yarn安装Bulma CSS框架后出现了这个问题:
const { environment } = require('@rails/webpacker')
const { VueLoaderPlugin } = require('vue-loader')
const vue = require('./loaders/vue')
environment.plugins.prepend('VueLoaderPlugin', new VueLoaderPlugin())
environment.loaders.prepend('vue', vue)
module.exports = environment
Run Code Online (Sandbox Code Playgroud)
然后我将其导入到我的项目中app/javascript/packs/application.scss:
@import '~bulma';
Run Code Online (Sandbox Code Playgroud)
我的布局文件 ( application.html.erb) 包含以下行:
<%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
<%= stylesheet_pack_tag 'application' %>
Run Code Online (Sandbox Code Playgroud)
我创建了一个简单的虚拟应用程序来重现该问题。
关于我在这里可能做错了什么有什么建议吗?
提前致谢!
我最终找到了解决方案。
app/javascript/stylesheets/application.scss我创建了放置以下行的文件:
@import '~bulma';
Run Code Online (Sandbox Code Playgroud)
然后,app/javascript/stylesheets/application.js我添加了以下行:
@import '~bulma';
Run Code Online (Sandbox Code Playgroud)
看来 webpacker 需要 application.js 文件导入适当的 CSS 文件才能工作。
| 归档时间: |
|
| 查看次数: |
833 次 |
| 最近记录: |