在更新rails 4期间没有将nil隐式转换为String

时间:2013-11-07 18:03:23

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-4

我正在尝试更新密码。这是我的表格

<%= form_for(:profile, url: {action: 'change_password'}, remote: true ) do |f| %>
<%= f.password_field :password %>
<% end %>

这是我的控制器

def change_password
    @customer = Customer.find session[:customer_id]
    unless params[:profile].nil?
      password = params[:password]
      @customer.update_attribute(:password, password)
    end
  end

在注册期间,我已经加密并保存了我的密码。这是我的模型

def self.generate_hash password
        Digest::SHA1.hexdigest password   #Showing error in this line
    end

    def generate_password
        self.password = Customer.generate_hash self.password
    end

但是在更新密码时会收到错误

no implicit conversion of nil into String

1 个答案:

答案 0 :(得分:1)

尝试

def self.generate_hash password
    Digest::SHA1.hexdigest password.to_s   #Showing error in this line
end

<强>更新

尝试替换

password = params[:password]

通过

password = params[:profile][:password]

这可能导致密码保持为零。