我正在按照Michael Hartl的Rails教程来构建一个小型演示应用程序。我在注销时被困住了。这是我的路线。rb:
Rails.application.routes.draw do
resources :users
get "/login", to: "sessions#new"
post "/login", to: "sessions#create"
delete "/logout", to: "sessions#destroy"
# Define your application routes per the DSL in https://guides.rubyonrails.org/routing.html
# Defines the root path route ("/")
root 'users#index'
end
这是相关的控制器操作:
def destroy
log_out
redirect_to root_url, status: :see_other
end
这是定义LOG_OUT的会话帮助器:
def log_out
reset_session
@current_user = nil
end
下面是视图中的链接标记:
<%= link_to "Log out", logout_path, data: { 'turbo-method': :delete } %></span>
当我点击注销链接时,我得到这个错误。预期行为:注销用户,重定向到登录屏幕。
我做错了什么?
我不知道是因为Turbo,还是Turbo安装正确。我已经在Gemfile中添加了gem‘turbo-rails’,然后运行了捆绑包,但没有任何效果。
4条答案
按热度按时间7gyucuyw1#
对我来说,添加方法::Delete与Data-Turbo一起工作。
cuxqih212#
使用传递方法进行检查
<%=link_to“注销”,LOGOUT_PATH,METHOD::DELETE,DATA:{‘TURBO-METHOD’::DELETE}%>
或
<%=link_to“注销”,LOGOUT_PATH,方法::DELETE%>
8gsdolmq3#
您正在通过GET访问删除方法路线。你跑了吗?
您可能希望在配置/devise.rb中通过GET而不是Delete更改注销
以下是参考资料:https://github.com/hotwired/turbo-railshttps://github.com/heartcombo/devise/issues/5439
snvhrwxg4#
您可以将
link_to
更改为button_to
它不那么神奇,但更可靠,因为它使用的不是链接,而是表单(在正常生活中,点击链接是一个
GET
请求)