ruby-on-rails – 未定义的方法`’为nil:NilClass – Ruby

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 未定义的方法`’为nil:NilClass – Ruby前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
目前我有一个控制器方法,每当用户在视图表单中输入数字时,该方法将递增1.我将展示代码错误,我只是想确保我在这里提供足够的背景.所以,我有另一种形式创建订阅者,该模型采用名称和电话号码,但它也有一个访问属性,它是一个int数据类型.所以给我这个问题的控制器方法,它的功能是通过查找附加到该Subscrier的数字来增加1次访问订阅者.但是当用户键入他们的电话号码时,它会抛出这个错误未定义的方法`’为nil: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

错误

我不确定其他代码是否适用?如果您需要更多信息,请告诉我.谢谢.

解决方法

那是因为@ subscriber.visit是nil,你需要先将它设置为0.

在您的迁移中,无论何时创建订阅者,您都可以将其默认为0,然后您不必担心这一点.

t.integer:visit,默认值:0

或者在@ subscriber.visit = 1之前添加@ subscriber.visit || = 0行(如果为nil则将其设置为0).

猜你在找的Ruby相关文章