2013-01-12 48 views
0

我想製作一個窗體,讓用戶編輯一個mongoid對象的一個​​字段作爲呈現的JSON文本。模型中有一個領域,我的rails應用程序不應該理解,但我想公開一個通用編輯器。所以對於這個領域,我想將它渲染爲漂亮的JSON,並將其展示在一個大的<textarea>中,然後在任何編輯之後再解析JSON。Rails窗體以編輯JSON對象爲文本

我可以想到十幾種方法來做到這一點,但我不知道什麼是最符合Rails哲學和最不同於正常腳手架的。我應該在控制器中將對象呈現爲JSON文本嗎?然後,我不得不重複newedit方法中的代碼,以及updatecreate方法中的解析代碼,這似乎有點不禮貌。有沒有一種方法可以定義一個幫助器或自定義表單窗口小部件,這個窗口小部件在_form.html.erb中更具可重用性?或者,也許已經寫了?

回答

3

你可以讓自己的屬性寫入/讀取器,模型:

attr_accessible the_field_raw 

    def the_field_raw 
    self.the_field.to_s 
    end 

    def the_field_raw=(value) 
    self.the_field = JSON(value) 
    end 

whitch應與形式的發電機,並在控制器沒有額外的代碼兼容。

希望它有幫助!

1

將這些值序列化爲JSON。

class Price < ActiveRecord::Base 
    serialize :values, JSON 

    validates :start, :end, :values, :presence => true 
end