2012-12-12 58 views
0

我寫了一個控制器和模型來從數據庫中獲取數據。但它顯示了我們運行rails時的錯誤:NameError在ProductsController#index中的url ..我給我的url作爲localhost:3000/products。那麼它是給錯誤爲: 資源:In rails錯誤是因爲NameError在ProductsController#index

NameError in ProductsController#index 

    uninitialized constant ProductsController::Product. 


    my controller is: 
    products_controller.rb 
    class ProductsController < ApplicationController 
     # GET /products 
     # GET /products.json 

     def index 
     @products = Product.all 
     respond_to do |format| 
      format.html # index.html.erb 
      format.json { render json: @products } 
     end 
     end 

     #render :text => params and return false 
     # GET /products/PR1 
     # GET /products/PR1.json 
     def show 
     @product = Product.find(params[:prod_id]) 

     respond_to do |format| 
      format.html # show.html.erb 
      format.json { render json: @product } 
     end 
     end 

    end 

    model as product.rb 
    class Product < ActiveRecord::Base 
     attr_accessible :model_name, :brand_name, :price, :discount, :qty_available 
    end 

我在routes.rb中所申報的產品

和我設計index.html.erb和show.html.erb

我不知道哪裏出錯真的...

+1

你有在app/models /目錄中名爲product.rb的模型? –

+2

它是'product.rb',而不是'products.rb'。 – halfelf

+0

frnds ..都是右..我把模型命名爲products.rb,但它應該是product.rb ..但現在錯誤是模板缺失..那是什麼? –

回答

2

的型號名稱是product.rb而不是products.rb和你的表演動作,你想有一個單一的產品,以便正確的語法是:

def show 
     @product = Product.find(params[:id]) 

     respond_to do |format| 
     format.html # show.html.erb 
     format.json { render json: @product } 
     end 
    end 
+0

謝謝你的回答。但現在的問題是它沒有連接到HTML頁面。它只是在瀏覽器上顯示json數據。錯誤是ProductsController中的ActiveRecord :: RecordNotFound#show –

+0

您是否在show view中調用'@ product'而不是'@ products'? – siekfried

+0

我只打電話給@product。這裏是代碼.. def show –

0

使用find_by_id代替查找。它會拋出異常ActiveRecord :: RecordNotFound每當沒有找到記錄和find_by_id返回你無

+0

如果我使用find_by_id而不是find(params [id]),它會在ProductsController中返回NoMethodError#show undefined method'find_by_id'for#