我遇到了一个nil类错误。我确切地了解这个错误告诉我什么,但我不知道为什么是零。在我看来,应该有一个被传递给我的桌子的对象。这应该很容易调试。这是我的清晰度代码。
控制器方法:
def info
@subscriber = Subscriber.find_by_phone_number(params[:phone_number])
end
查看:
<% @subscriber.each do |subscriber| %>
<tr>
<td><%= image_tag avatar_url(subscriber) %></td>
</tr>
<% end %>
错误:
Showing /Users/intern/Desktop/Rails/rowster/app/views/subscribers/info.html.erb where line #3 raised:
undefined method `each' for nil:NilClass
绑定信息方法:
[1] pry(#<SubscribersController>)> @subscriber
=> nil
让我知道您是否需要信息?
您在这里有两个问题:
首先:@subscriber.each
使用undefined method 'each' for nil:NilClass
失败。这基本上告诉您,您尝试在nil
的内容中调用each
,因此@subscriber
必须为nil
。这意味着Subscriber.find_by_phone_number(params[:phone_number])
没有返回订户。电话号码发送到服务器中没有数据库中的匹配条目。
第二:即使数据库中有匹配条目,您的代码也会失败。因为find_by_phone_number
将返回一个订阅者,而不是数组。因此,调用each
会再次失败。
解决这两个问题都将您的代码更改为:
<% if @subscriber %>
<tr>
<td><%= image_tag avatar_url(@subscriber) %></td>
</tr>
<% else %>
<tr><td>No subscriber found!</td></tr>
<% end %>
并使用数据库中的电话号码。