Rails表单将JSON对象编辑为文本

时间:2013-01-12 00:05:43

标签: ruby-on-rails-3 json forms mongoid

我想创建一个表单,让用户可以将mongoid对象的一个​​字段编辑为呈现的JSON文本。我的rails应用程序不应该理解模型中的一个字段,但我想公开一个通用编辑器。因此,对于这个字段,我想将其渲染为漂亮的JSON,并将其暴露在一个大的<textarea>中,然后在任何编辑后重新解析JSON。

我可以想到十几种方法可以做到这一点,但我想知道什么是最符合Rails哲学和最不同于正常脚手架。我应该将对象渲染到控制器中的JSON文本吗?然后,我必须在newedit方法中重复该代码,并在updatecreate方法中重复解析代码,这似乎有些麻烦。有没有办法定义一个更可重用的_form.html.erb中的帮助器或自定义表单窗口小部件?或者也许已经写过?

2 个答案:

答案 0 :(得分: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 :(得分:1)

将值序列化为JSON。

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

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