1

我想制作一个表单,让用户将 mongoid 对象的一个​​字段编辑为呈现的 JSON 文本。模型中有一个字段是我的 rails 应用程序不应该理解的,但我想公开一个通用编辑器。所以对于这个字段,我想将它呈现为漂亮的 JSON,并以大的形式公开它,<textarea>然后在进行任何编辑后重新解析 JSON。

我可以想出十几种方法来做到这一点,但我想知道什么最符合 Rails 哲学,并且与普通脚手架的分歧最小。我应该在控制器中将对象呈现为 JSON 文本吗?然后我必须在 and 方法中重复该代码,以及在andnew方法edit中的解析代码,这似乎有点笨拙。有没有办法定义一个更可重用的助手或自定义表单小部件?或者也许已经写好了?updatecreate_form.html.erb

4

2 回答 2

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 应该与表单生成器兼容,并且控制器中没有额外的代码。

希望能帮助到你!

于 2013-01-12T12:58:19.510 回答
2

将值序列化为 JSON。

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

   validates :start, :end, :values, :presence => true
end
于 2015-12-12T19:19:10.953 回答