Rails 6: ссылка на destroy_user_session_path с использованием GET вместо DELETE - PullRequest
1 голос
/ 25 мая 2020

Я только что запустил простой проект 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

Щелчок по ссылке дает:

Rails error message showing the GET request

В консоли ошибок нет:

no console errors on click

Мой app/javascript/packs/application.js выглядит так:

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

Итак, Rails u js должен перехватить щелчок по ссылке и выполнить 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

I пытался найти решение в других потоках SO, но я не нашел ничего, что работает. Некоторые люди предлагали использовать кнопку вместо ссылки, но мне нужна ссылка, а не кнопка.

Проблема возникла после того, как я установил Bulma CSS framework через пряжу:

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' %>

Я создал простое фиктивное приложение , чтобы воспроизвести проблему.

Есть какие-нибудь советы по поводу того, что я здесь делаю неправильно?

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 30 мая 2020

В конце концов я нашел решение.

Я создал файл app/javascript/stylesheets/application.scss, где я поместил строку:

@import '~bulma';

Затем в app/javascript/stylesheets/application.js я добавил строку:

import 'stylesheets/application'

Похоже, что webpacker требует, чтобы файл application. js импортировал соответствующие CSS файлы для работы.

0 голосов
/ 26 мая 2020

Можете ли вы добавить свой html источник в вопрос?

Также вы можете попробовать это вместо:

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

обратите внимание на часть: data: {method: :delete}

...