nil的未定义方法:Rails中的NilClass错误

时间:2014-01-09 01:09:02

标签: ruby-on-rails

我在Rails控制器中定义了以下实例变量:

class PagesController < ApplicationController
  def about
    @story, @story2 = Post.tagged_with("test").all(order: "RANDOM()", limit: 2)
  end
end

但是,当我尝试在视图页面中使用该变量时,我收到以下错误: NoMethodError in Pages#about undefined method user for nil:NilClass

视图中的任何内容似乎都无效。这是抛出错误的视图的一部分:

 <% if @story.user.photo_file_name.present? %>
      <%= image_tag @story.user.photo.url(:avatar) %>
   <% else %>
      <%= image_tag('avatar.png', :size => "50x50") %>
 <% end %>

我没有看到控制器中的变量定义有问题。导致错误的原因是什么?

谢谢!

3 个答案:

答案 0 :(得分:0)

您似乎没有帖子,因此@storynil

答案 1 :(得分:0)

您的实例变量未填充,因此您的查询不得返回任何内容。数据库中没有任何内容与您要查找的内容相匹配,或者请求格式不正确。

如果您确定数据库中有匹配的记录,我会尝试将其作为替代方案,看看它是否有帮助:

@story, @story2 = Post.tagged_with("test").order("RANDOM()").limit(4)

答案 2 :(得分:0)

正如其他人已经告诉过你的那样,你的代码中的某些东西会得到零值而不应该。使用pry调试代码,

  1. 请参阅http://railscasts.com/episodes/280-pry-with-rails
  2. binding.pry放在PagesController#about的开头并开始播放