2012-02-09 34 views
0

私は、Agile Web Development with Rails 2ndに問題がある初心者です。 Ruby verison 1.8.6。 scaffold製品をadmin_controller.rbに置くよう指示されたときに問題が発生しました。私は行を削除し、今私は次のエラーメッセージが表示されます。ライン#10が提起管理/ index.html.erbを表示管理#インデックス でNoMethodError in Admin#index

NoMethodError:

あなたはそれを期待していなかったときは、nilのオブジェクトを持っています! Arrayのインスタンスが想定されている可能性があります。

ここで、コントローラの/InstantRails-2.0-win/rails_apps/depot:

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(線#10付近)nil.each

抽出されたソースを評価しながら エラーが発生しまし情報:admin_controller class AdminController < ApplicationController end

次のビュー情報があります。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 クラスの製品<はActiveRecord ::ベース エンド

任意のアドバイスは?

+0

Adminのコントローラはどのように見えますか?それはインデックスアクションを持っていますか?その中に '@ product'を設定していますか? – MrDanA

+0

adminコントローラが空でした。本は足場を示唆しました:私にエラーメッセージを与えた製品。ここには、現在のコントローラがあります。クラスAdminController yatta20

答えて

3

は、あなたのコントローラに設定されていない@productsのような音と、あなたはまた、ビューの可能タイプミスがあります。ビューで

\管理者の\ 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

ありがとうございます。ここに新しいエラーメッセージがあります。 AdminControllerのNoMethodError#index #の定義されていないメソッド 'all' RAILS_ROOT:C:/InstantRails-2.0-win/rails_apps/depot アプリケーショントレース|フレームワークトレース|フルトレース 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: 'index 'に – yatta20

+0

これはまったく違うものです。これが進む道が恐れています。あなたはProductモデルを持っていると確信していますか? app/models/product.rb? – miked

+0

はい、現時点では空です。クラスProduct yatta20