`
crazycode
  • 浏览: 153980 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

rails中覆盖to_json方法的注意事项

阅读更多
最近一个项目中,使用到比较多的json,某个model因为一些原因,需要覆盖掉to_json,我简单的通过alias_method做了一个包装,代码如下:
    def to_json_with_ext
      "{\"data\":#{self.to_json_without_ext}}"
    end
    alias_method_chain :to_json, :ext

单元测试没有问题,但运行rails应用时,出现如下异常信息:
wrong number of arguments (1 for 0)

/usr/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/json/encoding.rb:21:in `to_json'
/usr/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/json/encoding.rb:21:in `send'
/usr/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/json/encoding.rb:21:in `encode'
/usr/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/json/encoding.rb:31:in `raise_on_circular_reference'
/usr/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/json/encoding.rb:20:in `encode'
/usr/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/json/encoders/enumerable.rb:10:in `to_json'
/usr/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/json/encoders/enumerable.rb:10:in `map'


跟踪后发现,activerecord的to_json方法有一个参数options, to_json(options = {}),所以出现参数不匹配的异常,修改代码如下:
    def to_json_with_ext(options = {})
      "{\"data\":#{self.to_json_without_ext(options)}}"
    end
    alias_method_chain :to_json, :ext


运行通过。
分享到:
评论
1 楼 rainlife 2009-07-22  
向ext_scaffold中借用了to_ext_json

相关推荐

    as_json_encoder:为 Rails 需求量身定制的 JSON 编码器

    as_json 编码器 一个 JSON 编码器,专为 Rails 的需求量身定制。 目标是利用领域知识并加速 Rails 应用程序中的 JSON 编码过程。 这个 gem 与 Rails 4.1+ 兼容。 当前状态 目前,这是高度实验性的。 性能与当前的 ...

    rails_admin_json_editor:RailsAdmin 的 JSON 编辑器

    RailsAdminJson 编辑器待办事项:写一个宝石描述安装将此行添加到应用程序的 Gemfile 中: gem 'rails_admin_json_editor'然后执行: $ bundle或者自己安装: $ gem install rails_admin_json_editor用法TODO:在...

    to_xls:这个 Rails 插件是导出到 Excel 的最简单方法。 它使您能够调用 to_xls 到一系列活动记录。 构建器选项与 to_json to_xml 相同,除了

    除了 :include 之外,构建器选项与 to_json / to_xml 相同。 注意:IMO 我会使用 to_csv 插件; 它更兼容。 ( ) 用法 @users = User . all # # defaults are export headers and all fields # @users . to_xls @...

    Rails101_by_rails4.0

    此外,书中还介绍了一些Rails中的高级概念,如Strong Parameters(强参数),它在Rails 4.0版本中引入,用于解决之前版本中的参数篡改问题,从而帮助开发者安全地处理外部提交的数据。 通过一系列的教学内容,包括...

    rails open_flash_chart

    render :json => chart.to_json end ``` 在视图中,通过JavaScript将这个Action的URL作为Flash图表的源,然后Flash会自动向这个URL请求数据并渲染图表。这里可能需要使用Turbolinks或其他技术处理页面加载与更新时...

    ar_pg_json:使用PostgreSQL json聚合函数包装Active Record查询直接输出为json

    接下来,可以在Active Record查询中直接使用 `to_pg_json` 方法来替代 `to_json`。例如,假设有一个 `User` 模型,你可以这样获取JSON格式的用户列表: ```ruby users = User.all.to_pg_json(:id, :name, :email) ``...

    collection_json_rails:使用Rails touch进行Collection + JSON序列化

    gem 'collection_json_rails' , '~> 0.4.2' 然后执行: $ bundle 或将其自己安装为: $ gem install collection_json_rails 这就是您所需要的。 CollectionJson :: Serializer包括在内;-) 用法 您只需要为模型...

    serialize_json-rails

    SerializeJson::Rails 为 Rails 应用程序序列化JSON安装将此行添加到应用程序的 Gemfile 中: gem 'serialize_json-rails'然后在你的 app/assets/javascripts/application.js 文件中添加依赖项(在 jQuery 之后,...

    使用到json-ruby-v-000

    当然有Rails提供了to_json方法,该方法将获取我们的对象,然后将其转换为JSON。 让我们来看看它的作用。 在我们的控制器中,让我们将调用交换到PostSerializer中以to_json 。 # posts_controller.rb # ... def ...

    RestFul_Rails_Dev_pdf_v_0.1.zip

    本资料“RestFul_Rails_Dev_pdf_v_0.1.zip”包含了《RESTful Rails Development》的翻译版,将深入探讨如何在Rails中实现RESTful的设计模式。 首先,RESTful设计的核心概念是资源(Resources)。在Rails中,资源...

    simple_json_api-rails

    gem 'simple_json_api-rails' 然后执行: $ bundle 或者自己安装: $ gem install simple_json_api-rails 用法 取决于 。 定义序列化程序 需要为每个资源创建一个序列化程序。 序列化器将定义序列化 json 的...

    rails_semantic_logger, Rails 语义记录器用语义记录器替换 Rails 缺省记录器.zip

    rails_semantic_logger, Rails 语义记录器用语义记录器替换 Rails 缺省记录器 Rails 语义记录器 语义记录器用语义记录器替代 Rails 缺省记录器。http://github.com/rocketjob/rails_semantic_logger文档有关完整文档...

    inspinia admin - v2.5 Rails_Full_Version

    "inspinia admin - v2.5 Rails_Full_Version" 是一个基于Rails框架构建的后台管理系统的完整版本。这个系统采用流行的Inspinia Admin模板,提供了丰富的功能和自定义选项,旨在帮助开发者快速构建高效、现代且用户...

    rails_admin_acts_as_list:rails_admin插件以对记录进行排序

    在您的config/initializers/rails_admin.rb初始化程序中添加配置: RailsAdmin . config do | config | config . model Post do list do sort_by :position # Add Default sorting sort_reverse false # sort p

    rails_apps_composer, 一个 gem,为 Rails 启动应用程序创建 Rails 应用程序模板.zip

    rails_apps_composer, 一个 gem,为 Rails 启动应用程序创建 Rails 应用程序模板 Rails 应用编辑器 Rails 应用程序编辑器 gem 安装一个 命令行 工具来从"食谱"的Collection 组装 Rails 应用程序。"你可以使用 rails_...

    agile_web_development_with_rails_3rd_edition.9994652073.pdf

    《敏捷Web开发与Rails》第三版是一本深入探讨Ruby on Rails框架在敏捷软件开发方法论下的应用指南。本书由多位知名作者共同编写,包括Sam Ruby、Dave Thomas、David Heinemeier Hansson等,他们都是在Ruby社区内享有...

    Api-rails5_api_tutorial.zip

    Api-rails5_api_tutorial.zip,了解如何在michael hartl的rails 5教程上构建一个现代api立即在rails应用程序中构建一个api!(Rails 5版本),一个api可以被认为是多个软件设备之间通信的指导手册。例如,api可用于web...

    to_xls-rails:将Rails ActiveRecord或Mongid数据导出到Excel文件

    这个简单的插件使您能够调用to_xls到Rails的数组集合。 数组元素支持对象:ActiveRecord,Mongid,哈希。 在您的Gemfile中: gem 'to_xls-rails' # Last officially released gem # gem "to_xls-rails", :git => ...

    rails3 和 thinking_sphinx安装

    现在,你可以在你的 Rails3 应用中使用 Thinking Sphinx 提供的搜索方法,如 `search` 来进行全文搜索: ```ruby @results = Post.search("搜索关键词") ``` Thinking Sphinx 还允许你进行高级查询、排序和过滤,...

    serialized_json:在 html 表单中编辑 Rails ActiveRecord JSON 属性

    "serialized_json:在html表单中编辑Rails ActiveRecord JSON属性"这个主题主要关注如何在Rails应用中存储和编辑模型对象的JSON属性,并通过HTML表单进行交互。在Rails中,ActiveRecord允许我们将数据模型与数据库表...

Global site tag (gtag.js) - Google Analytics