Ruby on Rails的新手,並且在遵循Michael Hartl的教程時遇到問題。我正在使用Rails 3.2.2和Ruby 1.9.3。這個問題看起來很相似,有人提出但沒有答案另一個問題: Rails Error NoMethodError in UsersController#show errorUsersController中的Rails Gem :: LoadError#new
試圖通過/註冊
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-紅寶石的寶石,並在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+\-.][email protected][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-紅寶石寶石。在我的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
有什麼建議嗎?
用最簡單的可能的解釋開始,你有沒有重新啓動服務器後加入bcrypt-ruby到Gemfile? – danivovich 2012-03-10 17:22:40
嗨,是的,我已經重新啓動服務器,因爲添加了bcrypt。 (在本地主機上使用WEBrick服務器) – ds123 2012-03-10 17:56:17