2011-03-17 31 views
0

尋找覆蓋to_xml方法來處理我的應用程序中的所有內容,並且時間很艱難。覆蓋Rails 3中所有對象的to_xml

原因是非常微不足道的,我需要擺脫它:缺省格式化它默認情況下。我聽說過「這是一個視圖」問題,我應該在我需要的模型中重寫to_xml。

問題是,我以編程方式返回這個東西,並有:skip_types設置使我的反應不正確。當你有一個空的數組時,它們是不正確的,你最終會得到: \ n 突然它是一個字符串值,由客戶端讀取\ n(< <也有一堆空白,但堆棧溢出不會' t似乎喜歡它)。我也不喜歡在30個地方重寫同一個事物的想法。

這就是說,修復非常簡單,我似乎無法將它放在正確的位置。只需要尋求幫助就可以把這個放在哪裏。而且我的修補程序的第二組眼睛也將不勝感激。

我的解決方法是

alias __old_to_xml to_xml 
def to_xml(options = {}) 
    options.merge!(:indent => 0) 
    __old_to_xml(options) 
end 

回答

0

我大體上同意逮捕其他有關於這種方法,但我認爲你可以猴子通過將文件與下面到config /初始化內核打補丁:

module ActiveRecord::Serialization 
    alias __old_to_xml to_xml 
    def to_xml(opts={}) 
    __old_to_xml opts.merge(:indent => 0) 
    end 
end 

如果你在使用Rails 3,我相信你會需要ActiveModel :: Serializers :: Xml而不是ActiveRecord :: Serialization,但不能保證。

+0

非常感謝。我會在幾分鐘內嘗試一下。 所以,切線,但我沒有得到除了我在某個點上設置壞軌升級以外的方法的憂慮。在這個類中有一個顯示決定 - 他們已經決定默認的顯示是:indent = 2.真的是我應該擁有的共識:indent => 0(或其他一些顯示邏輯)返回控制器或15個奇數模型的to_xml方法。有沒有另外一種方法可以防止to_xml方法包含'\ n'字符,這樣更好? – 2011-03-18 01:36:45