获取NoMethodError,nil的未定义方法:NilClass

时间:2011-07-24 00:32:35

标签: ruby-on-rails-3 null

我是初学者,我正在尝试在我的图书索引视图中显示与图书相关联的标记名称(通过标记)。问题是,出于某种原因,我在运行时得到undefined method "tags" for nil: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 个答案:

答案 0 :(得分:1)

您的代码存在的问题是您<% for tag in @book.tags %>@book不存在。你需要的是<% for tag in book.tags %>