【问题标题】:rails3 devise - no route matches "/sessions/user"rails3 设计 - 没有路线匹配“/会话/用户”
【发布时间】:2011-05-14 09:11:26
【问题描述】:

这是我第一次使用设计,我对大量的文件和配置选项感到困惑。 在安装设计之前,我使用了 ryan bates 的 nifty:authentication - 在安装设计之前我没有删除它,我想现在我的路由和/或控制器有点搞砸了。

好吧,在 /users/sign_in 上唱歌后,设计试图将我重定向到

http://localhost:3000/sessions/user

但我得到了错误:

No route matches "/sessions/user"

我不知道错误在哪里,感谢任何帮助

我把所有相关代码都放在一个要点中:https://gist.github.com/972058

提前致谢

【问题讨论】:

  • fwiw 我通过完全回滚我之前使用的 nifty:authorization 解决了这个问题。 (rails destroy nifty:authorization)在我再次生成用户模型和控制器并清理了一些路由之后,它现在可以工作了。
  • 你能发布你的 config/routes.rb 文件吗?

标签: ruby-on-rails ruby-on-rails-3 session authorization devise


【解决方案1】:

在我的例子中,我有一个导致问题的会话控制器。从路由文件中删除资源 :sessions 应该可以解决问题。那是因为我之前创建了一个会话管理器。一旦消失,我就再也没有看到这个问题。

【讨论】:

    【解决方案2】:

    那是因为您的路由中没有根路径。正如您在设计页面中看到的那样:https://github.com/plataformatec/devise

    用户登录后,确认 帐户或更新密码, 设计将寻找一个范围内的根 重定向的路径。示例:对于 :user 资源,它将使用 user_root_path 如果存在,否则默认 将使用 root_path。这表示 你需要在里面设置根 你的路线

    要指定重定向页面,您需要这样做https://github.com/plataformatec/devise/wiki/How-To:-Redirect-to-a-specific-page-on-successful-sign-in

    顺便说一句。您不需要会话控制器来使其工作

    【讨论】:

    • 我的路由文件中已经有 root :to => "pages#index"(gist routes.rb 中的第 88 行) - 似乎不起作用
    • 然后尝试为登录指定重定向页面。我猜它不起作用,因为会话控制器没有与用户连接并且内部没有用户方法,所以不可能找到会话/用户(但我不知道为什么要在那里设计重定向;/尝试这个github.com/plataformatec/devise/wiki/…)
    • 谢谢 Greg 我试过了,但没有成功......仍然得到同样的错误。它必须与 views/devise/session/new.html.erb " resource_name, :url => session_path(resource_name)) do |f| 中的这一行有关
    • 因为 url => session_path(resource_name) 将是 /session/user 并且它不存在。当我更改此路径时,重定向有效,但设计没有让我登录
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-28
    • 1970-01-01
    • 2011-04-14
    • 2015-03-16
    • 1970-01-01
    相关资源
    最近更新 更多