2012-07-25 65 views
0

我工作的一個項目上和IM很新的軌道工作,不能得到模型提交併驗證顯示頁面

我無法弄清楚什麼是錯的exectly。 我得到這個錯誤。

NoMethodError在產品#指數

未初始化的常量的ProductsController ::優惠

Esentially我有一個特點,我嘗試推行。

在我的產品表中我有一個名爲保留價格的專欄,我想要一個用戶在產品頁面上的表單上提交一個數字,然後驗證它是否保留底價,如果接受它會被添加到購物車,如果不是閃光請輸入更高的報價,

問題是我似乎無法弄清楚如何讓模型和控制器協同工作。

我一直在這一週,我仍然沒有線索。

我想知道是否有人可以看看我的代碼,看看我缺少的視圖頁我得到的錯誤,爲NilClass:類的未定義的方法`model_name',我確信我輸入了正確的模型形式,如果我能得到這個工作,我可以快速完成其餘的工作,但我不知道我缺少什麼。

報價controller.rb 類OffersController < ApplicationController中

attr_accessible:產品,:報價,:reserve_price

DEF新 @offer = Offer.new 端

end 

報價模型.rb

class Offer < ActiveRecord::Base 

belongs_to的:產品 的has_many:reserve_prices

attr_accessible:產品:報價,:reserve_price

validates_presence_of:提供 驗證:ensure_meets_reserve_price

私人 高清ensure_meets_reserve_price 如果量< self.product。 reserve_price errors.add(:金額,「不符合底價」) 結束 結束

私人 高清reserve_price product.reserve_price 結束

高清your_offer @your_offer = Offer.new

高清新 @offer =發售。新=:your_offer 端

end 

產品索引視圖文件

class ProductsController < ApplicationController 

的before_filter:認證,:除了=> [:索引,:顯示]

#GET /產品 #GET /products.xml

def index @offer = Offer.new

@products = Product.search(params[:search_query]) 

respond_to do |format| 
    format.html # index.html.erb 
    format.xml { render :xml => @products } 
end 

#GET /產品/ 1 #GET /products/1.xml DEF顯示

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


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

#GET /產品/新 #GET /products/new.xml def new @product = Product.new

respond_to do |format| 
    format.html # new.html.erb 
    format.xml { render :xml => @product } 
end 

#GET /產品/ 1 /編輯 DEF編輯 @product = Product.find(PARAMS [:ID]) 端

#POST /產品 #POST /產品。 XML DEF創建 @product = current_user.products.new(PARAMS [:產品])

respond_to do |format| 
    if @product.save 
    format.html { redirect_to(@product, :notice => 'Product was successfully created.') } 
    format.xml { render :xml => @product, :status => :created, :location => @product } 
    else 
    format.html { render :action => "new" } 
    format.xml { render :xml => @product.errors, :status => :unprocessable_entity } 
    end 
end 

#PUT /產品/ 1 #PUT /products/1.xml DEF更新 @product = Product.find(PARAMS [:ID])

respond_to do |format| 
    if @product.update_attributes(params[:product]) 
    format.html { redirect_to(@product, :notice => 'Product was successfully updated.') } 
    format.xml { head :ok } 
    else 
    format.html { render :action => "edit" } 
    format.xml { render :xml => @product.errors, :status => :unprocessable_entity } 
    end 
end 

#DELETE /產品/ 1 #DELETE /products/1.xml DEF破壞 @product = Product.find(PARAMS [:ID]) @ product.destroy

respond_to do |format| 
    format.html { redirect_to(products_url) } 
    format.xml { head :ok } 
end 

末 結束

產品controller.rb

class ProductsController < ApplicationController 
    before_filter :authenticate, :except => [:index, :show] 

    # GET /products 
    # GET /products.xml 
    def index 
    @products = Product.search(params[:search_query]) 

    respond_to do |format| 
     format.html # index.html.erb 
     format.xml { render :xml => @products } 
    end 
    end 

    # GET /products/1 
    # GET /products/1.xml 
    def show 
    @product = Product.find(params[:id]) 

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

    # GET /products/new 
    # GET /products/new.xml 
    def new 
    @product = Product.new 

    respond_to do |format| 
     format.html # new.html.erb 
     format.xml { render :xml => @product } 
    end 
    end 

    # GET /products/1/edit 
    def edit 
    @product = Product.find(params[:id]) 
    end 

    # POST /products 
    # POST /products.xml 
    def create 
    @product = current_user.products.new(params[:product]) 

    respond_to do |format| 
     if @product.save 
     format.html { redirect_to(@product, :notice => 'Product was successfully created.') } 
     format.xml { render :xml => @product, :status => :created, :location => @product } 
     else 
     format.html { render :action => "new" } 
     format.xml { render :xml => @product.errors, :status => :unprocessable_entity } 
     end 
    end 
    end 
# PUT /products/1 
# PUT /products/1.xml 
def update 
    @product = Product.find(params[:id]) 

    respond_to do |format| 
    if @product.update_attributes(params[:product]) 
     format.html { redirect_to(@product, :notice => 'Product was successfully updated.') } 
     format.xml { head :ok } 
    else 
     format.html { render :action => "edit" } 
     format.xml { render :xml => @product.errors, :status => :unprocessable_entity } 
    end 
    end 
end 

# DELETE /products/1 
# DELETE /products/1.xml 
def destroy 
    @product = Product.find(params[:id]) 
    @product.destroy 

    respond_to do |format| 
    format.html { redirect_to(products_url) } 
    format.xml { head :ok } 
    end 
end 
     end 

任何幫助嗎?

很多appricated我在這一段時間,並沒有想通了!

+0

您的視圖屬於哪個操作? – ryudice 2012-07-25 22:27:48

+0

該視圖是一個產品索引視圖,我只是粘貼form_for它的自我,因爲它沒有連接,這是我的第一個問題:) – user1529597 2012-07-25 22:30:17

+0

你需要使用嵌套的資源,你可以發佈你的產品控制器? – ryudice 2012-07-25 22:34:55

回答

0

如果我理解正確你的問題:

  • 錯誤顯示當訪問產品#顯示
  • 要包括在產品#顯示頁面

  • 報價形式

在這種情況下,您需要初始化產品中的@offer變量像這樣sController show動作:

@offer = Offer.new 

加成

下一個問題:ProductsController類::報價是未知的,它不應該是因爲你有一個報價模型。我剛剛嘗試將您的優惠表單包含在展示操作中,除此之外,您還使用優惠的新實例初始化了該字段。 (也許是一個數額?)。無論如何,我無法從您的代碼片段中看到爲什麼Offer模型在您的控制器中不可用。你能提供完整的來源嗎?

我首先懷疑你的怪私有方法在發售

def your_offer 
    @your_offer = Offer.new 

    end 

def new 
    @offer = Offer.new = :your_offer 
end 

是原因,但我將他們和形式呈現的罰款。但我應該做什麼?

+0

是該頁面將不會與它的形式,當我更新了產品位指示我仍然得到這個NoMethodError在產品#指數顯示 未定義的方法'MODEL_NAME」的NilClass: – user1529597 2012-07-25 23:25:55

+0

類對不起,我想我chaged錯誤之一: )我把它放在產品的展示和索引中,現在我得到一個不同的錯誤,所以進展:)其未初始化的常量ProductsController :: Offer – user1529597 2012-07-26 00:11:09

+0

好吧,我想這是一個新問題,那麼,如果我已經回答了你的問題,如果你接受它會很好。至於新的問題:你應該做的第一件事是仔細閱讀錯誤信息,找出錯誤發生的位置(文件,行號......) - 也許你自己找到了答案,如果沒有,提供這個信息與問題。 – bento 2012-07-26 00:48:03

相關問題