2011-07-24 37 views
1

我是一名初學者,正嘗試在書籍索引視圖中顯示與圖書相關的標記名稱(通過標記)。問題是,由於某種原因,我得到undefined method "tags" for nil:NilClass當我運行:獲取NoMethodError,未定義的方法爲零:NilClass

<% for book in @books %> 
    <div id="book"> 
    <div class="bookHeader"> 
     <h5 class="bookTitle"><%= link_to book.title, book %></h5> 
    <div class="bookTags"> 
     <ul class="tags"> 
     <li> 
      <% for tag in @book.tags %> 
      <%= link_to @tag.name %> 
      <% end %> 
     </li> 
     </ul> 
    ... 
    <% end %> 

在索引文件中我有:

def index 
    @books = Book.all 

    respond_to do |format| 
     format.html # index.html.erb 
     format.xml { render :xml => @books } 
    end 
    end 

在控制檯,它表明我有相關標籤:

>> @book = Book.find(12) 
>> @book.tags.count 
>> 3 

現在我想知道如果我需要構建一個聲明書,如果書有標籤或類似的東西。有人有主意嗎?如果我需要提供更多的代碼,請告訴我。

回答

1

您的代碼問題是您有<% for tag in @book.tags %>,其中@book不存在。你需要的是<% for tag in book.tags %>

+1

斑點。他還應該將<%= link_to @ tag.name%>'更改爲'<%= link_to tag.name%>'。 – Mischa

+0

感謝Thiago和mischa。我早些時候嘗試過,我認爲並沒有看到結果。但是那是因爲我有標籤的書被埋在了名單中,而且我沒有對索引進行回調。哎呦! – tvalent2

相關問題