我是一名新手,他在使用Rails 2nd时遇到了Agile Web Development的问题。 Ruby verison 1.8.6。当本书指示我将scaffold产品放入admin_controller.rb时,问题就出现了。我删除了该行,现在我收到以下错误消息。
Admin#index中的NoMethodError 显示第10行引出的admin / index.html.erb:
当你没想到它时,你有一个零对象! 您可能期望一个Array实例。 评估nil.each时发生错误
提取的来源(第10行):
7: <th>Image url</th>
8: </tr>
9:
10: <% for product in @product %>
11: <tr>
12: <td><%=h product.title %></td>
13: <td><%=h product.description %></td>
RAILS_ROOT:C:/InstantRails-2.0-win/rails_apps/depot
这是控制器信息:admin_controller class AdminController&lt; ApplicationController的 端
以下是视图信息:Views \ admin \ index.html.erb
<table>
<tr>
<th>Title</th>
<th>Description</th>
<th>Image url</th>
</tr>
<% for product in @product %>
<tr>
<td><%=h product.title %></td>
<td><%=h product.description %></td>
<td><%=h product.image_url %></td>
<td><%= link_to 'Show', product %></td>
<td><%= link_to 'Edit', edit_product_path(product) %></td>
<td><%= link_to 'Destroy', product, :confirm => 'Are you sure?', :method => :delete %></td>
</tr>
<% end %>
</table>
<br />
<%= link_to 'New product', new_product_path %>
以下是模型信息:Models \ product.rb 类产品&lt;的ActiveRecord :: Base的 端
有任何建议吗?
答案 0 :(得分:3)
听起来像@products没有在您的控制器中设置,并且您在视图中也可能有拼写错误:
在views \ admin \ index.html.erb中,更改:
<% for product in @product %>
为:
<% for product in @products %>
并确保您的控制器具有:
admin_controller.rb
class AdminController < ApplicationController
def index
@products = Product.all
end
end