2012-02-04 80 views
0

雖然呈現XML爲對象,我正在錯誤未定義的方法`模型名稱 '在導軌3

(未定義的方法`模型名稱NoMethodError' 的OrderResponse:類):

OrderResponse。 RB

class OrderResponse 
    include ActiveModel::Serialization 

    attr_accessor :payload 
end 

在控制器

def create 
    @order_response = OrderResponse.new 
    @order_response.payload = 12345 

    respond_to do |format| 
    format.xml { render :xml => @order_response } 
    end 
end 

我發現有類似標題的其他問題,而搜索,根據我修改與「respond_with」這inturns拋出一個錯誤

undefinedMethod「模型名稱」中OrderResponse

如何「的respond_to」解決這個?

回答

1

你可以試着用這個名字,它返回類的名稱定義一個類的方法:

def self.model_name; 'OrderResponse'; end 
+0

添加後,錯誤消失。但是xml不會呈現給OrderResponse對象 – Achaius 2012-02-04 06:09:08

+0

什麼是呈現的呢? – rkb 2012-02-04 06:17:39

2

我找到了答案,這某處MODEL_NAME定義stackoverflow和希望我可以信貸來源...這是我對它的解釋。

在Rails 3中,如果您的路由中列出的資源具有.rb文件的模型,但沒有活動記錄表,則會看到這種錯誤。這對我來說似乎是一種嘗試在這個模型中引用:controller和action的形式。也許它與Rails試圖爲模型或類似的東西處理關聯有關。無論哪種方式,這是我自從我從Rails 2.3.8升級了一個應用程序以來新的。

對我來說,表現爲:

未定義的方法`MODEL_NAME」的SomeModel:類

爲了解決這個問題,在受影響的類中添加的頂部:

extend ActiveModel::Naming 
include ActiveModel::Conversion 
def persisted? 
    false 
end 

這對我這樣的兩個模型都有效。

相關問題