2012-02-09 6 views
0

Я новичок, у которого проблема с Agile Web Development с Rails 2nd. Ruby verison 1.8.6. Проблема началась, когда книга указала, что я должен поставить файл леса в admin_controller.rb. Я удалил строку, и теперь я получаю следующее сообщение об ошибке.NoMethodError in Admin # index

NoMethodError в Админах # индекса Показан админы/index.html.erb где линия # 10 подняли:

У вас есть ноль объект, когда вы не ожидали! Возможно, вы ожидали экземпляр массива. Произошла Ошибки при оценке 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 класса AdminController < ApplicationController конца

Вот информация мнения: Просмотры \ админ \ 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 класс продукт < ActiveRecord :: Base конца

Любые посоветует?

+0

Как выглядит контроллер для администратора? Имеет ли он действие индекса? Вы устанавливаете в нем '@ product'? – MrDanA

+0

Контроллер администратора пуст. В книге предлагается эшафот: продукт, который дал мне сообщение об ошибке. Вот текущий контроллер от чьего-то предложения. класс AdminController yatta20

ответ

3

Похоже @products не будучи установленным в контроллере, и вы также возможную опечатку в представлении:

во взглядах \ 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 
+0

Спасибо за помощь. Вот новое сообщение об ошибке. NoMethodError в AdminController # index undefined method 'all 'for # RAILS_ROOT: C: /InstantRails-2.0-win/rails_apps/depot Приложение Trace | Рамочная трасса | Полная трассировка C: /InstantRails-2.0-win/ruby/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/base.rb: 1532: в 'method_missing ' app/controllers/admin_controller .rb: 3: in 'index ' – yatta20

+0

Ну, это что-то совсем другое, и я боюсь того пути, который это займет. Вы уверены, что у вас есть модель продукта? app/models/product.rb? – miked

+0

Да, но на данный момент он пуст. class Product yatta20

Смежные вопросы