ROR剥离问题

时间:2014-12-31 08:25:17

标签: ruby-on-rails

我正在使用strip查看电子邮件,但它给了我这个问题,请帮帮我。

UsersController#check_email中的NoMethodError nil的未定义方法`strip':NilClass

  def check_email

    if params[:email].blank? 
    @email = params[:email].strip
    user = User.find_by_email(@email)
    if user.nil?
      text = "false"
    else
      text = "true"
    end
    render :text => text

  else
    render :text =>text
    end 
  end

4 个答案:

答案 0 :(得分:1)

根据塞尔吉奥和布拉德的反馈意见:

def check_email
  text = params[:email].present? && User.where(email: params[:email].strip).exists?
  render :text => text
end

答案 1 :(得分:0)

将其更新为: -

def check_email
  if params[:email].present? 
    @email = params[:email].strip
    user = User.find_by_email(@email)
    unless user.present?
      text = "false"
    else
      text = "true"
    end
    render :text => text
  else
    render :text =>text
  end 
end

答案 2 :(得分:0)

您有小错误,需要使用:

unless params[:email].blank?

或者,

if params[:email].present?

我建议您阅读blank? vs nil? vs empty? vs present?

答案 3 :(得分:0)

if params[:email].blank?应为if params[:email].present?。 问题是当params[:email]为零时,您正在调用strip方法,即nil.strip

所以改成它跟随

  def check_email
    if params[:email].present? 
      @email = params[:email].strip
      user = User.find_by_email(@email)
      text = user.nil? ? "false" : "true"
    else      
      text = "please enter email address"
    end 
    render :text =>text
  end