Rails undefined方法`id'代表nil:NilClass

时间:2016-10-25 05:59:58

标签: ruby-on-rails

我正在使用指南获取rails,但是某些代码没有按预期运行(使用Rails 4.2.6,但书籍是关于旧版本编写的)。感谢您能帮助我。

当我加载任何对象(广告)的页面时 - 我看到带有对象参数的精美页面,但当我加载带有对象列表的页面时 - 我得到了

NoMethodError in Ads#index
Showing /home/mei33/mebay/app/views/ads/index.html.erb where line #11 raised:
undefined method `id' for nil:NilClass

<ul>
    <% for ad in @ads %>
        <li><a href="/ads/<%= @ad.id %>"><%= @ad.name %></a></li>
    <% end %>
</ul>

我的ads_controler.rb看起来像这样:

class AdsController < ApplicationController
    def show
        @ad = Ad.find(params[:id])
    end

    def index
        @ads = Ad.all
    end
end

尝试添加这行代码,但没有帮助:

def new
 @ad = Ad.new
end

也许有些东西我注意不到?有些错误?

1 个答案:

答案 0 :(得分:1)

您应该拨打ad.id而不是@ad.id

<ul>
    <% for ad in @ads %>
        <li><a href="/ads/<%= ad.id %>"><%= ad.name %></a></li>
    <% end %>
</ul>

或者:

<ul>
    <% @ads.each do |ad| %>
        <li><a href="/ads/<%= ad.id %>"><%= ad.name %></a></li>
    <% end %>
</ul>