繁体   English   中英

为什么在Ruby on Rails中出现nil:NilClass的错误“未定义方法'each'”?

[英]Why do I get the error 'undefined method `each' for nil:NilClass' in Ruby on Rails?

我是RoR的新手,我将不胜感激!

我的“索引”文件中有此代码块,但我想将其移动到“应用程序”文件中,以便它出现在每个页面的导航中:

<ul class="blogs">
  <% @blogs.each do |blog| %>
    <li>  
      <%= link_to blog.name, blog.url, { :target => 'main-iframe'} %>
      <%= link_to 'Edit', edit_blog_path(blog) %>
    </li>
  <% end %>
</ul>
<%= link_to 'New Blog', new_blog_path %>

这可以正常工作并正确显示。 但是,“编辑”和“新博客”链接根本不再起作用,它们将我带到下面的错误页面(请注意,当它们位于索引页面时,这些链接可以正常工作):

Blogs中的NoMethodError

nil:NilClass的未定义方法“ each”

具体问题是这一行:

<% @blogs.each do |blog| %>

该URL仍然是正确的(/ blogs / new),但该行似乎阻止了此页面上的某些内容。

在我的blogs_controller.rb页面中(除了其他几件事之外):

def index
  @blogs = Blog.all
end
def new
  @blog = Blog.new
end
def edit
end

有人可以帮我吗?

谢谢

如果要在多个页面上显示此内容,则应创建一个before过滤器:

before_filter :load_blogs

def load_blogs
  @blogs = Blog.all
end

def index 
end

一些说明:

  • 考虑在每次加载页面时缓存数据,而不是查询数据库
  • 考虑使用分页,如果博客过多, .all可能会使您的应用膨胀

因为在新操作中,@ blogs为零。 你可以试试

def new
  @blogs = Blog.all
  @blog = Blog.new
end

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2025 STACKOOM.COM