首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails & Devise映射路径

Rails & Devise映射路径
EN

Stack Overflow用户
提问于 2015-02-20 23:43:57
回答 3查看 3.4K关注 0票数 1

我在尝试转到http://app.mysite.dev/login时收到以下错误-

代码语言:javascript
复制
Could not find devise mapping for path "/login".
This may happen for two reasons:

1) You forgot to wrap your route inside the scope block. For example:

  devise_scope :user do
    get "/some/route" => "some_devise_controller"
  end

2) You are testing a Devise controller bypassing the router.
   If so, you can explicitly tell Devise which mapping to use:

   @request.env["devise.mapping"] = Devise.mappings[:user]

现在,这里是我的routes.rb文件的相关部分:

代码语言:javascript
复制
namespace 'app', path: '', constraints: { subdomain: 'app' } do
    devise_for :users, :skip => [:registrations, :confirmations]
    devise_for :agents, :skip => :sessions

    devise_scope :users do
      get "login" => "users/sessions#new"
    end
    ...
end

get "login"线路生成的路由如下(来自rake routes)

代码语言:javascript
复制
app_login GET    /login(.:format)     app/users/sessions#new {:subdomain=>"app"}

我不知道这是否重要,但我将STI用于用户>代理关系。

所以,我已经定义了devise的范围,我没有测试,所以你知道是怎么回事吗?

EN

回答 3

Stack Overflow用户

发布于 2015-09-06 14:15:34

尝试将您的devise_scope替换为以下内容。在您的命名空间'app‘块中。

代码语言:javascript
复制
devise_scope :app_user do
  get "login" => "users/sessions#new"
end

它似乎正在设计改变它在命名空间中寻找的范围。

供您参考:https://github.com/plataformatec/devise/issues/2496

是的,它应该是devise_scope :app_user而不是devise_scope :app_users

票数 1
EN

Stack Overflow用户

发布于 2015-09-06 14:22:16

这只是一个简单的拼写错误- devise_scope :users应该是devise_scope :user,如错误消息中所述。

票数 1
EN

Stack Overflow用户

发布于 2015-02-20 23:53:19

您似乎没有为您的:users定义自定义的SessionsController,并且Devise不能使用它的默认SessionsController,因为您已经为您的devise_scope :users设置了名称空间。

我会定义你自己的自定义class App::SessionsController,然后添加它,重写你的路由,如下所示:

代码语言:javascript
复制
namespace 'app', path: '', constraints: { subdomain: 'app' } do
  devise_for :users, controllers: { sessions: 'sessions' }, skip: [:registrations, :confirmations]

  devise_scope :users do
    get "login" => "sessions#new"
  end
end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28632844

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档