【问题标题】:Rails form to edit JSON object as textRails 表单将 JSON 对象编辑为文本
【发布时间】:2013-01-12 00:05:43
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

    您可以在模型中创建自己的属性写入器/读取器:

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

    希望对你有帮助!

    【讨论】:

      【解决方案2】:

      将值序列化为 JSON。

      class Price < ActiveRecord::Base
         serialize :values, JSON
      
         validates :start, :end, :values, :presence => true
      end
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-03
        相关资源
        最近更新 更多