在用 Devise 时,退出的路由是 Delete,于是用 turbo-method 指定了 Delete 的请求方式。但请求 format 也变为了 Delete。在请求了 Devise 的退出登录的路由后
Started DELETE "/users/sign_out" for ::1 at 2022-08-06 22:45:15 +0800
Processing by Users::SessionsController#destroy as TURBO_STREAM
User Load (0.5ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 ORDER BY "users"."id" ASC LIMIT $2 [["id", 1], ["LIMIT", 1]]
Redirected to http://localhost:3000/
Completed 302 Found in 7ms (ActiveRecord: 0.5ms | Allocations: 2075)
Started DELETE "/" for ::1 at 2022-08-06 22:45:15 +0800
ActionController::RoutingError (No route matches [DELETE] "/"):
可以看到,得到了 302 的 status 后,它去请求了我指定的退出登录的 path,也就是根目录,但它同样带着 Delete 方式去请求。
仅仅是退出登录,我应该不需要写一个 turbo_frame 把 header 那块替换掉吧?而且不知道为何它还要去用 Delete 方式请求一次"/"
我唯一正确的处理方式就是:将 header 那块内容包在 turbo_frame 里。然后退出登录后,将显示"Sign in" 和 "Sign out"显示,并替换原本显示用户名的元素。
是这样吗?感觉新的这个 turbo 和传统的思路不太一样。