我正在使用指南获取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
也许有些东西我注意不到?有些错误?
答案 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>