https://github.com/rails/jbuilder

Jbuilder(3300✨)

Jbuilder gives you a simple DSL for declaring JSON structures that beats manipulating giant hash structures. This is particularly helpful when the generation process is fraught with conditionals and loops. Here's a simple example:

定义一个属性和结构的名字(动态的),使用 set! 方法

json.set! :author do

json.set! :name, 'David'

end

#=> {"author": {"name": "David"}}

合并一个已存在的hash,或者array到当前的content, 使用merge! 方法

hash = { author: { name: "David"} }

json.post do

json.title "Merge HOWTO"

json.merge! hash

end

# => "post": { "title": "Merge HOWTO", "author": { "name": "David" } }

可以使用ruby 语法, each,  比如案例中的:

  # json.temperature @location.recordings.each do |record|
  #   json.temperature record.temp
  # end

也可以使用array! , 同样是针对一对多的关联,只要是数组集合就行。

方便的写法写:提取指定的属性:

json.array!  @location.recordings,  :temp, :status

使用array!,可以输出array类型的资料

Jbuilder对象可以直接互相被嵌套到:

比如建立1对多关联的表。

company = Company.new("Dell", Person.new("John", 36))

company.to_builder.target!

把对象变成jbuilder对象。

# => {"name": "Dell", "president":{"name":"John", "age":58}}

可以用于ActionView template language。 如show.json.jbuilder.

也可以用partials。 如views/comments/_comments.json.jbuilder, 然后设定一个局部变量comments :

json.partial! 'comments/comments', comments: @message.comments

可以渲染partials集合:

json.array! @posts, partial: 'posts/post', as: :post

或者

json.partials! partial: 'posts/post', collection: @posts, as: :post

《绿色框内的可以不写。》

写法有多种

可以使用:local选项传入任意对象到局部模版:

json.partials! "sub_template", locals: {user: :user}

支持碎片缓存fragment caching: Rails.cache

json.cache! ['v1', @person], expires_in: 10.minutes do
json.extract! @person, :name, :age
end

Jbuilder(3300✨)的更多相关文章

  1. GoRails教程自建Rails 的 API; gem 'jbuilder'简单用法;使用JWT进行验证(git上的实做);curl命令使用;status状态码;JWT文档翻译摘录;

    API: application programming interface 在Ruby中特指调用某个对象的信息,如hash的方法库library中的方法,参数,回传值等. 视频:如何用Rails 建 ...

  2. Java集合-5. (List)已知有一个Worker 类如下: 完成下面的要求 1) 创建一个List,在List 中增加三个工人,基本信息如下: 姓名 年龄 工资 zhang3 18 3000 li4 25 3500 wang5 22 3200 2) 在li4 之前插入一个工人,信息为:姓名:zhao6,年龄:24,工资3300 3) 删除wang5 的信息 4) 利用for 循

    第六题 5. (List)已知有一个Worker 类如下: public class Worker { private int age; private String name; private do ...

  3. Jbuilder 2008安装及破解

    1.下载Jbuilder及破解包 2.安装: 1>点击install 2> 选择第一项: 3>同意协议: 4>选择安装目录 5>选择服务器 6>选择默认 7> ...

  4. jbuilder的set!方法重构接口

    https://github.com/rails/jbuilder  的set!方法重构接口, 因为grape没法使用 jBuilder 的缓存,所以直接用 Rails 写 API (1)多个图片 i ...

  5. JBuilder链接sql server数据库

    加载你的jdbc的驱动             一.将jdbc驱动解压到一个指定的目录,例如:c:\sql_server_jdbc,                其中包含三个驱动文件:msbase. ...

  6. JBuilder+struts一个常见异常

    [org.apache.commons.digester.Digester]-[ERROR] Parse Error at line 3 column 22: The content of eleme ...

  7. 【BZOJ】3300: [USACO2011 Feb]Best Parenthesis(模拟)

    http://www.lydsy.com/JudgeOnline/problem.php?id=3300 这个细节太多QAQ 只要将所有的括号'('匹配到下一个')'然后dfs即可 简单吧,,, #i ...

  8. JBuilder生成Exe

    首先保证工程可以通过绿箭头执行 然后在File菜单中选择New,先建立Archive下的Application 接下来的界面中大部分可以直接选择“Next”,除了下面的第3步,会询问是否需要将工程引用 ...

  9. SAP TAX CODE 自动计算税金(BAPI_ACC_DOCUMENT_POST CALCULATE_TAX_FROM_GROSSAMOUNT)

    CALL FUNCTION 'CALCULATE_TAX_FROM_GROSSAMOUNT' EXPORTING i_bukrs = ' "公司代码 i_mwskz = 'X1' " ...

随机推荐

  1. 【转】SQL Server编程游标

    在关系数据库中,我们对于查询的思考是面向集合的.而游标打破了这一规则,游标使得我们思考方式变为逐行进行.对于类C的开发人员来着,这样的思考方式会更加舒服. 正常面向集合的思维方式是: 而对于游标来说: ...

  2. Linq初探

    1.什么是LINQ LINQ是语言集成查询(Language Integrated Query),这项技术是在.net 3.5就已经引入的技术,极大的方便了数据的查询,他可以支持数据库.XML.ADO ...

  3. R中绘制聚类的离散图

    R中利用cluster简单的绘制常见聚类离散图 # 引入cluster库(clara.fanny) library(cluster) # 聚类散点图绘制 # 引入factoextra,cluster库 ...

  4. nginx挂维护页面

    本篇文章摘抄于他人的文章,来自于CSDN的JeremyIT同学,但我还是自己重新敲一遍. 实现的效果是:访问网站的任何页面,都跳转到同一个页面.而这一个页面就是维护页面,可以根据需要修改. serve ...

  5. oracle(十一) scn

    SCN(System Chang Number)作为oracle中的一个重要机制,在数据恢复.Data Guard.Streams复制.RAC节点间的同步等各个功能中起着重要作用. 理解SCN的运作机 ...

  6. centos 配置mysql

    1.在线安装 1.首先检测一下,mysql之前有没有被安装 命令:rpm -qa | grep mysql 2.删除mysql的命令: rpm -e --nodeps `rpm -qa | grep ...

  7. mysql 数据操作 单表查询 where约束 is null in

    需求找出年龄是 81 或者 73 或者 28 mysql ; +----+-----------+--------+-----+------------+-----------+----------- ...

  8. C# 使用BackgroundWorker实现WinForm异步

    写了一个基于BackgorundWorker演示异步操作的例子.由于这个理基本上实现了BackgorundWorker的大部分功能:异步操作的启动.操作结束后的回调.异步操作的撤销和进度报告等等.尽管 ...

  9. 安装memcached扩展 验证过了可行

    . 安装libmemached 复制代码 代码如下: wget https://launchpad.net/libmemcached/1.0/1.0.16/+download/libmemcached ...

  10. hdu5009

    这题说的是给了一个  长度为n(n<=50000)的数列,数列表示的是给每个珍珠涂的颜色,任务是将一窜长度为n的珍珠涂成他所要的颜色.然后你可以操至多n次, 每次画只能画连续的区间,每次操作是的 ...