[英]In Ruby on Rails Restful Authentication, UsersController#new, a @user = User.new is used. Is it actually needed?
[英]Rails Gem::LoadError in UsersController#new
Ruby on Rails的新手,在遵循Michael Hartl的教程时遇到了问题。我将Rails 3.2.2与Ruby 1.9.3结合使用。 该问题与提出但未得到解决的另一个问题非常相似: Rails错误NoMethodError in UsersController#show error
尝试通过/ signup添加新用户时出现以下错误
Gem::LoadError in UsersController#new
bcrypt-ruby is not part of the bundle. Add it to Gemfile.
重新加载页面会出现错误:
NoMethodError in UsersController#new
undefined method `key?' for nil:NilClass
该问题似乎与包含bcrypt-ruby gem和user.rb中has_secure_password方法的使用有关。 在user.rb中删除对has_secure_password的调用将消除该错误,并成功转到注册页面。
user.rb:
# == Schema Information
#
# Table name: users
#
# id :integer not null, primary key
# name :string(255)
# email :string(255)
# created_at :datetime not null
# updated_at :datetime not null
# password_digest :string(255)
#
class User < ActiveRecord::Base
attr_accessible :name, :email, :password, :password_confirmation
has_secure_password
validates :name, presence: true, length: { maximum: 50 }
valid_email_regex = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
validates :email, presence: true,
format: { with: valid_email_regex },
uniqueness: { case_sensitive: false }
validates :password, length: { minimum: 6}
end
users_controller.rb:
class UsersController < ApplicationController
def new
@user = User.new
end
def create
@user = User.new(params[:user])
if @user.save
flash[:success] = "Welcome!"
redirect_to @user
else
render 'new'
end
end
end
但是,我找不到包含bcrypt-ruby gem的任何错误。 在Gemfile中,我有:
gem 'bcrypt-ruby', '3.0.1'
而且宝石也已经在Gemfile.lock中生成:
DEPENDENCIES
annotate (~> 2.4.1.beta)
bcrypt-ruby (= 3.0.1)
我还通过迁移将password_digest添加到数据库中:
class AddPasswordDigestToUsers < ActiveRecord::Migration
def change
add_column :users, :password_digest, :string
end
end
有任何想法吗 ?
我正在阅读同一教程,遇到了完全相同的问题。
我的解决方案是重新启动Web服务器。 安装gem之后,我认为Web服务器需要重新启动才能加载。
贾斯汀
重新启动网络服务器后,它为我修复了此问题(spork在后台运行以加快测试的运行速度)
您是否尝试过'bundle update'命令,如果您在Gemfile中指定,通常捆绑程序将处理gems。 如果要检查gem依赖项,请检查http://rubygems.org/gems 。
如果您使用的是Windows(我知道它很奇怪-但我们的某些应用程序仅在Windows中工作),则有些技巧可以安装bcrypt
安装bcrypt的步骤。
1下载Devkit并解压缩
您可以从此处http://rubyinstaller.org/downloads/下载
2将devkit放在您的jruby文件夹中(在我的情况下为C:\\ applications \\ jruby \\ devkit)
3您还需要安装ruby 1.8.7或1.9(有时需要重新启动系统)
4 CD进入devkit目录
5运行ruby dk.rb init
6打开config.yml,并确保同时列出了两个jruby安装。 如果没有,请添加它们。 完成后,保存并关闭config.yml。
示例:-C:/ applications / jruby
7运行ruby dk.rb安装
8 jruby -S gem安装bcrypt-ruby
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.