Ruby on Rails - 未定义方法 `devise_for' 或没有路由匹配 [GET] "/"

问题描述 投票:0回答:1

标题:“安装和配置 Devise gem 后出现未定义方法‘devise_for’错误”

我通过将

gem 'devise'
添加到我的 Gemfile 并运行
bundle install
来安装 Devise gem。我还运行了
rails generate devise:install
,将
config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
添加到
config/environments/development.rb
,并将
<p class="notice"><%= notice %></p>
<p class="alert"><%= alert %></p>
添加到
app/views/layout/application.html.erb
.

然后我使用

User
生成了一个
rails generate devise User
模型并运行
rake db:migrate
。但是,当我尝试访问该页面时,我看到错误“没有路由匹配 [GET] /”。

当我注释掉

devise_for :users
行或将其放在
config/routes.rb
的末尾时,我可以看到该页面,但
/users/sign_in
不起作用,我看到了错误
undefined method 'devise_for'
.

这是我当前的

config/routes.rb
文件:

Rails.application.routes.draw do
  root to: "hello#index"
  devise_for :users
end

如何修复此错误并使 Devise 身份验证路由正常工作?

ruby-on-rails rubygems devise
1个回答
0
投票

routes.rb
文件似乎有问题。报错信息提示
devise_for :users
方法不被Rails路由器识别。

以下是您可以尝试解决问题的一些方法:

  1. 确保

    devise
    gem 已正确安装并包含在您的应用程序的
    Gemfile
    中。您可以通过运行
    bundle install
    并在已安装的 gem 列表中查找
    devise
    来检查这一点。

  2. 检查

    config/routes.rb
    文件的语法是否正确。
    devise_for :users
    线应放置在
    Rails.application.routes.draw do
    块内。这是一个例子:

    Rails.application.routes.draw do
      devise_for :users
      root to: "home#index"
    end
    
  3. 如果以上步骤都不行,试试

    rails generate devise:install
    .

  4. 如果以上步骤都不起作用,请检查您使用的

    devise
    gem 的版本。确保它与您的 Rails 版本兼容。您可以在
    devise
    gem 文档中找到兼容性信息。

© www.soinside.com 2019 - 2024. All rights reserved.