NoMethodError в Admin # index - PullRequest
       28

NoMethodError в Admin # index

0 голосов
/ 09 февраля 2012

Я новичок, у которого проблема с Agile Web Development с Rails 2nd.Рубиновая версия 1.8.6.Проблема началась, когда книга проинструктировала меня поместить продукт скаффолдов в admin_controller.rb.Я удалил строку, и теперь я получаю следующее сообщение об ошибке.

NoMethodError в Admin # index Показывает admin / index.html.erb, где поднялась строка # 10:

У вас нольвозражать, когда ты этого не ожидал!Возможно, вы ожидали экземпляр 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

Вот информация о представлении: 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 %>

Вот информация о моделях: Класс моделей \ product.rb Product

Любой совет?

1 Ответ

3 голосов
/ 09 февраля 2012

Похоже, что @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
...