我仅在生产环境中收到以下错误: No route -6ren">
gpt4 book ai didi

ruby-on-rails - 没有路由匹配 [GET] "/members/sign_out Devise

转载 作者:数据小太阳 更新时间:2023-10-29 08:04:12 25 4
gpt4 key购买 nike

我使用 Rails 4.1.0 和 Devise。我已经在 Member 模型类上设置了设计,当我点击下面的“注销”链接时:

<%= link_to "Log out", destroy_member_session_path, :method => :delete %> 

我仅在生产环境中收到以下错误:

No route matches [GET] "/members/sign_out Devise

注意:我已经预编译了我的 Assets 并在我的 application.js 文件中包含以下内容:

//= require jquery
//= require jquery_ujs

最佳答案

当您没有安装 gem jquery-ujs 或者您没有通过 = javascript_include_tag "application" 在您的应用程序中调用生成的 javascript 时,会发生这种情况,响应将作为 GET 请求发送,路由将失败。

检查下面的选项以使其工作:

  1. devise.rb 中更改 config.sign_out_via = :get(不是推荐,因为 DELETE 是使用它的合适的 RESTful 方式)

    config.sign_out_via = :delete 
  2. 使用按钮代替 link_to

    = button_to('Logout', destroy_user_session_path, :method => :delete)

    有了 button_to,Rails 将在进行正确的 DELETE 调用时完成繁重的工作。你可以然后根据需要将按钮样式设置为看起来像链接。

  3. 在你的 routes.rb 中

    devise_for :members do
    get '/members /sign_out' => 'devise/sessions#destroy'
    end

关于ruby-on-rails - 没有路由匹配 [GET] "/members/sign_out Devise,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23712965/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com