2016-06-09 93 views
2

目前我有一个控制器方法,每次用户在视图窗体中输入数字时,该方法将递增1。我要展示代码和错误,我只是想确保我在这里提供足够的背景。所以,我有另一种形式创建一个subscriber这个模型需要名称和电话号码,但它也有一个访问属性是一个int数据类型。因此,控制器方法给我的问题,它的功能是通过查找附加到该Subscrier的号码来增加对Subscriber的1次访问。但是,当用户键入他们的电话号码时,它会抛出这个错误未定义的方法'+'为零:NilClass,我真的很难和如何解决它。这是我的代码清晰。未定义的方法'+'为零:NilClass - 红宝石

控制器:

def visit 
    @subscriber = Subscriber.find_by_phone_number(params[:phone_number]) 
    if @subscriber 
    @subscriber.visit += 1 
    @subscriber.save 
    flash[:notice] = flash[:notice] = "Thank You #{@subscriber.first_name}. You have #{@subscriber.days_till_expired} until renewal" 
    redirect_to subscribers_search_path(:subscriber) 
    else 
    render "search" 
    end 
end 

错误:

enter image description here

我不知道还有什么其他的代码将适用?让我知道你是否需要更多信息。谢谢。

+0

检查'@ subscriber'的值,特别是'@ subscriber.value'。这可能是'无'。然后显示创建'@ subscriber'的代码,并检查你对'@ subscriber.value'初始化(可能不是)的假设。 – Amadan

回答

5

这是因为@subscriber.visit为零,您需要先将其设置为0。

在您的迁移中,您可以在创建订户时将其默认为0,那么您不必担心这一点。

t.integer :visit, default: 0

或许@subscriber.visit += 1之前添加行@subscriber.visit ||= 0(如果它无它设置为0)。

相关问题