【问题标题】:No route matches [GET] "/admin/signout"没有路由匹配 [GET] "/admin/signout"
【发布时间】:2014-12-27 16:36:43
【问题描述】:

我正在使用 Devise gem 为我的网络应用构建管理员/用户身份验证。

我收到此错误:当我单击“退出”链接时,没有路由匹配 [GET]“/admin/signout”。

我的 html slim 代码:​​= link_to destroy_admin_session_path, method: :delete

运行'rake routes',并且应用程序具有destroy_admin_session

我在 Google Chrome 的检查元素中看到该链接具有“data-method=delete”。

我的会话控制器:

# encoding: utf-8
class Admin::Devise::SessionsController < Devise::SessionsController
  layout 'login'

  def after_sign_in_path_for(admin)
    admin_admins_path
  end

  def after_sign_out_path_for(resource_or_scope)
    new_admin_session_path
  end

end

但我收到 [GET] 错误。可能是什么?

【问题讨论】:

    标签: ruby-on-rails devise


    【解决方案1】:

    请检查您的 application.js 中是否需要 jquery 和 jquery_ujs

    //= require jquery
    //= require jquery_ujs 
    

    并确保将 application.js 加载到布局文件中:

    = javascript_include_tag 'application'
    

    由于您实际上不能使用 HTTP DELETE 方法创建链接,如果您将 method: :delete 放在帮助程序中,Rails 就会对链接进行一些魔术。

    这就是你需要 javascript 的原因。

    【讨论】:

    • 谢谢!那行得通!但是如果我不想使用 jquery 和 jquery_ujs .. 我需要对应用程序做什么?例如:我想使用 angular 而不是 Jquery..
    • 我不明白 Angular 如何替代 jQuery。它们是两个完全不同的包。您可以在 jQuery 旁边使用 Angular。
    • 我工作的公司,我们使用 Angular 而不是 Jquery 来进行网站中的所有交互。当我删除 jquery 或 jquery_ujs 时,remove 方法不起作用。但我不想使用 Jquery
    • 好的,谷歌搜索把我带到了github.com/tomchentw/angular-ujs。从未使用过,但看起来你可以使用它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-21
    • 2014-07-28
    • 1970-01-01
    相关资源
    最近更新 更多