簡體   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-2024 STACKOOM.COM