标题:“安装和配置 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 身份验证路由正常工作?
routes.rb
文件似乎有问题。报错信息提示devise_for :users
方法不被Rails路由器识别。
以下是您可以尝试解决问题的一些方法:
确保
devise
gem 已正确安装并包含在您的应用程序的Gemfile
中。您可以通过运行 bundle install
并在已安装的 gem 列表中查找 devise
来检查这一点。
检查
config/routes.rb
文件的语法是否正确。 devise_for :users
线应放置在 Rails.application.routes.draw do
块内。这是一个例子:
Rails.application.routes.draw do
devise_for :users
root to: "home#index"
end
如果以上步骤都不行,试试
rails generate devise:install
.
如果以上步骤都不起作用,请检查您使用的
devise
gem 的版本。确保它与您的 Rails 版本兼容。您可以在 devise
gem 文档中找到兼容性信息。