【问题标题】:Getting NoMethodError, undefined method for nil:NilClass获取 NoMethodError,nil 的未定义方法:NilClass
【发布时间】:2011-07-24 00:32:34
【问题描述】:

我是一名初学者,正在尝试在我的图书索引视图中显示与图书相关的标签名称(通过标签)。问题是由于某种原因我在运行时得到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

现在我想知道是否需要为书籍是否有标签或类似的东西构建一个语句。有人有想法么?如果我需要提供更多代码,请告诉我。

【问题讨论】:

    标签: ruby-on-rails-3 null


    【解决方案1】:

    您的代码的问题是您有&lt;% for tag in @book.tags %&gt;,而@book 不存在。你需要的是&lt;% for tag in book.tags %&gt;

    【讨论】:

    • 很好看。他还应该将&lt;%= link_to @tag.name %&gt; 更改为&lt;%= link_to tag.name %&gt;
    • 谢谢蒂亚戈和米莎。我之前尝试过这个,我认为并没有看到结果。但那是因为我有标签的书被埋在列表中,我没有在索引上调用 .reverse。哎呀!
    猜你喜欢
    • 2017-09-01
    • 1970-01-01
    • 2011-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多