【问题标题】:Rails 6: link to destroy_user_session_path using GET instead of DELETERails 6:使用 GET 而不是 DELETE 链接到 destroy_user_session_path
【发布时间】:2020-05-25 11:15:57
【问题描述】:

我刚刚开始了一个简单的 Rails 6.0.3.1 项目。

我正在设置设计操作,但注销链接似乎不起作用。尽管我指定了方法,但它正在执行GET 请求而不是DELETE

- if user_signed_in?
  = link_to 'Logout',
    destroy_user_session_path,
    class: 'button is-light',
    method: :delete

点击链接产生:

控制台没有错误:

我的app/javascript/packs/application.js 看起来像这样:

require("@rails/ujs").start()
require("turbolinks").start()
require("@rails/activestorage").start()
require("channels")

所以 Rails ujs 应该拦截链接点击并执行DELETE,但事实并非如此。

我的config/webpack/environment.js 看起来像这样:

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

我尝试在其他 SO 线程上搜索解决方案,但没有找到可行的方法。有些人建议使用按钮而不是链接,但我想要的是链接而不是按钮。

问题是在我通过 yarn 安装 Bulma CSS 框架后出现的:

yarn add bulma

然后我将其导入到app/javascript/packs/application.scss 的项目中:

@import '~bulma';

我的布局文件 (application.html.erb) 包含以下行:

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

我创建了一个simple dummy app 来重现该问题。

关于我在这里可能做错了什么有什么建议吗?

提前致谢!

【问题讨论】:

  • 在浏览器控制台中重新加载页面时是否看到任何 JS 错误?
  • 控制台没有错误,我刚刚又检查了一遍。

标签: ruby-on-rails webpacker rails-ujs


【解决方案1】:

我最终找到了解决方案。

我创建了文件app/javascript/stylesheets/application.scss,我在其中放置了一行:

@import '~bulma';

然后,我在app/javascript/stylesheets/application.js 中添加了这一行:

import 'stylesheets/application'

似乎 webpacker 需要 application.js 文件来导入适当的 CSS 文件才能工作。

【讨论】:

    【解决方案2】:

    您可以在问题中添加您的 html 源代码吗?

    另外,你可以试试这个:

    - if user_signed_in?
      = link_to 'Logout',
        destroy_user_session_path,
        class: 'button is-light',
        data: {method: :delete}
    

    注意部分:data: {method: :delete}

    【讨论】:

    • 更改为data: {method: :delete} 没有区别,GET 请求仍会被触发。生成的 HTML 是:&lt;a class="button is-light" rel="nofollow" data-method="delete" href="/users/sign_out"&gt;Logout&lt;/a&gt;
    猜你喜欢
    • 1970-01-01
    • 2013-01-13
    • 2013-03-17
    • 2011-04-24
    • 2016-01-30
    • 2019-06-03
    • 2016-03-12
    • 1970-01-01
    • 2020-06-28
    相关资源
    最近更新 更多