我的路由使用以下代码:

devise_for :user, 
  :as => '', 
  :path_names => { 
    :sign_in => "", 
    :sign_out => "logout", 
    :sign_up => "register" 
  }

但当我注销并转到/logout时,我会出现以下错误:

No route matches {:action=>"new", :controller=>"devise/sessions"}

如何将根路径设置为:sign_in操作?

推荐答案

对于询问错误Could not find devise mapping for path "/"的人来说,有一个解决方法.

你会发现你的日志(log)中有一条线索,可能会说:

[Devise] Could not find devise mapping for path "/".
This may happen for two reasons:

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

  devise_scope :user do
    match "/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]

因此,我try 了这种方法,但将其包装(如@miccet suggets)在一个范围块中:

devise_scope :user do
  root to: "devise/sessions#new"
end

这对我很管用

Ruby-on-rails相关问答推荐

带有rails 7.1的Lightbox2未初始化

Rails + Turbo_stream自定义操作:我可以在没有Stimulus的情况下根据DOM状态做出有条件的响应吗?

为什么没有生成命名空间路由?

发送不调用类或模块中的私有方法

升级到 Rails 6.1.6.1 导致 Psych::DisallowedClass: 试图加载未指定的类:符号

将 cookie 会话存储添加回 Rails API 应用程序

Postgres on Rails 致命:数据库不存在

Rails 和 OS X:如何安装 rmagick?

从控制器中删除 Cookie

如何在 Rails 上生成 AuthenticityToken

Ruby on Rails:在模型中验证还是在数据库中验证更好?

Rails 3.0 中的 f.error_messages

如何检测我的代码是否在 Rails 3 的控制台中运行?

过滤器在渲染之前但在控制器之后执行?

在范围内传递参数

Ruby 根据属性在数组中查找并返回对象

您如何访问设计控制器?

为什么 Google Oauth 在我的 Rails 应用程序中返回无效的 redirect_urI?

没有路由匹配缺少必需的键:[:id]

rails路由中资源和资源之间的区别?