2013-07-06 59 views
0

我對RoR很新,我非常感謝任何幫助!爲什麼我會在Ruby on Rails中爲'nil:NilClass'每個錯誤'undefined method'?

我有這個代碼塊在我的「索引」文件,但我想將其移動到我的「應用程序」文件,以便它出現在每個頁面的導航:

<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 %> 

這工作正常,正確顯示。然而,鏈接'編輯'和'新博客'不再起作用,他們帶我到下面的錯誤頁面(請注意,鏈接在索引頁面時工作正常):

博客中的NoMethodError#新

未定義的方法`每次」的零:NilClass

具體問題是這一行:

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

的URL仍然是正確的(/博客/新),但該行似乎被阻塞的東西在本頁。

在我blogs_controller.rb頁我有(其中包括一些其他的東西):

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

任何人都可以請幫助我嗎?

感謝

+0

你能在'new.html.erb'上發佈​​代碼嗎? –

回答

-1

因爲在新的行動@blogs是零。你可以試試

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

如果你想要這個出現在多個頁面,你應該創建一個過濾器之前:

before_filter :load_blogs 

def load_blogs 
    @blogs = Blog.all 
end 

def index 
end 

一些言論:

  • 考慮緩存數據,而不是查詢每個數據庫頁面加載的時間
  • 考慮使用分頁,.all可能會膨脹你的應用程序,如果有太多的馬ny博客
相關問題