Dès que j'ai introduit webpacker dans Rails 5.2 lors de la création d'une application de publication, la fonction de déconnexion initialement implémentée a cessé de fonctionner.
no route matches [get] "/logout"
J'ai eu une erreur et je n'ai pas pu envoyer la demande de suppression, je vais donc la corriger.
Ruby 2.6.5 Rails 5.2.4.2 webpacker 5.1.1
A partir du moment où vous chargez la balise de script webpacker dans application.html.slim après avoir construit le webpacker.
ruby:app/views/layouts/application.html.slim
head
.
.
.
- = javascript_include_tag 'application','data-turbolinks-track': 'reload'
+ = javascript_pack_tag 'application'
.
.
.
rails-ujs``` au fichier du paquet de fils. Et assurez-vous que cela est ajouté à package.json.$ yarn add rails-ujs
package.json
{
"name": ,
"dependencies": {
"@rails/webpacker": "5.1.1",
"rails-ujs": "^5.2.4-3",
},
}
2.app/javascript/packsディレクトリ配下にrails-ujs.js
ファイルを作成し、下記の記述を追加します。
app/javascript/packs/rails-ujs.js
import Rails from 'rails-ujs';
Rails.start();
3.app/javascript/packs/application.jsファイルに、rails-ujs.jsファイルを読み込ませます。
app/javascript/packs/application.js
require("./rails-ujs.js");
ruby:app/views/layouts/application.html.slim
head
.
.
.
= javascript_pack_tag 'application'
.
.
.
Avec ce qui précède, je pense que vous recevrez une demande DELETE.
À la suite de diverses enquêtes, je ne peux pas faire de déclaration définitive parce que je viens de combiner Tsuji, mais j'ai fait une prédiction que ce serait comme ça.
Si vous faites une erreur, je vous serais très reconnaissant de bien vouloir la signaler!
Tout d'abord, par principe, dans l'état par défaut, HTML ne peut envoyer que des requêtes GET, POST (vous pouvez donc vous connecter comme d'habitude)
Cependant, lors de l'émission d'API RESTful telles que DELETE et PATCH dans Rails, gem rails-ujs '' ou
gem jquery-rails '' est utilisé car le traitement est laissé à JavaScript. ..
Dans Rails 5.1 ou version ultérieure, ce
rails-ujs est chargé par défaut dans le fichier de contrôle JavaScript '' `` (voir le fichier ci-dessous).
Donc, nous n'avons pas à nous en soucier, écrivez simplement une option telle que method :: delete du côté Rails, et JavaScript gérera le reste, vous pouvez donc envoyer une requête DELETE depuis HTML. Je suis.
À propos, la prise en charge de jquery-ujs a été interrompue depuis Rails 5.1 (à partir du Guide Rails.)
app/assets/javascript/application.js
//= require rails-ujs
//= require activestorage
//= require turbolinks
//= require_tree .
J'ai donc pensé qu'il était naturel que le traitement de l'API RESTful ne puisse pas être utilisé à moins que rails-ujs ne soient installés et rails-ujs ne soient nouvellement chargés dans le fichier packs / application.js.
http://docs.komagata.org/5456 https://www.inodev.jp/entry/2019/12/03/234210
Recommended Posts