Jbuilder(3300✨)
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, 比如案例中的:
也可以使用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✨)的更多相关文章
- GoRails教程自建Rails 的 API; gem 'jbuilder'简单用法;使用JWT进行验证(git上的实做);curl命令使用;status状态码;JWT文档翻译摘录;
API: application programming interface 在Ruby中特指调用某个对象的信息,如hash的方法库library中的方法,参数,回传值等. 视频:如何用Rails 建 ...
- 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 ...
- Jbuilder 2008安装及破解
1.下载Jbuilder及破解包 2.安装: 1>点击install 2> 选择第一项: 3>同意协议: 4>选择安装目录 5>选择服务器 6>选择默认 7> ...
- jbuilder的set!方法重构接口
https://github.com/rails/jbuilder 的set!方法重构接口, 因为grape没法使用 jBuilder 的缓存,所以直接用 Rails 写 API (1)多个图片 i ...
- JBuilder链接sql server数据库
加载你的jdbc的驱动 一.将jdbc驱动解压到一个指定的目录,例如:c:\sql_server_jdbc, 其中包含三个驱动文件:msbase. ...
- JBuilder+struts一个常见异常
[org.apache.commons.digester.Digester]-[ERROR] Parse Error at line 3 column 22: The content of eleme ...
- 【BZOJ】3300: [USACO2011 Feb]Best Parenthesis(模拟)
http://www.lydsy.com/JudgeOnline/problem.php?id=3300 这个细节太多QAQ 只要将所有的括号'('匹配到下一个')'然后dfs即可 简单吧,,, #i ...
- JBuilder生成Exe
首先保证工程可以通过绿箭头执行 然后在File菜单中选择New,先建立Archive下的Application 接下来的界面中大部分可以直接选择“Next”,除了下面的第3步,会询问是否需要将工程引用 ...
- SAP TAX CODE 自动计算税金(BAPI_ACC_DOCUMENT_POST CALCULATE_TAX_FROM_GROSSAMOUNT)
CALL FUNCTION 'CALCULATE_TAX_FROM_GROSSAMOUNT' EXPORTING i_bukrs = ' "公司代码 i_mwskz = 'X1' " ...
随机推荐
- 在唯一密钥属性“fileExtension”设置为“.log”时,无法添加类型为“mimeMap”的重复集合项
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAkoAAAFfCAIAAAA+snR7AAAgAElEQVR4nOzdZ1xT18PAcf+1VpZaW6
- 解决Ubuntu14.04下vi编辑器不能使用方向键和退格键问题
参考:http://blog.sina.com.cn/s/blog_7d0c2fed01010zbi.html 系统:Ubuntu14.04 使用vi命令时,不能正常编辑文件,使用方向键时老是出现很多 ...
- 详解spring boot mybatis全注解化
本文重点介绍spring boot mybatis 注解化的实例代码 1.pom.xml //引入mybatis <dependency> <groupId>org.mybat ...
- Oracle体系结构之Oracle分区
目录 Oracle分区 0 一.Oracle分区理论知识 1 二.分区表的实现方式 1 1.范围分区(range partition table) 1 2.列表分区(list partitioning ...
- 三种空格unicode(\u00A0,\u0020,\u3000)表示的区别
1.不间断空格\u00A0,主要用在office中,让一个单词在结尾处不会换行显示,快捷键ctrl+shift+space ; 2.半角空格(英文符号)\u0020,代码中常用的; 3.全角空格(中文 ...
- What Powers Instagram: Hundreds of Instances, Dozens of Technologies(译文,转)
add by zhj: 对译文略有修改.原文发表时,Instagram还没被Facebook收购,读完只感觉Instagram这三个后台工程师真牛逼. 三个人就可以搞定1400万注册用户.不过,另一方 ...
- React package.json详解
概述: 每个项目的根目录下面,一般都有一个package.json文件,定义了这个项目所需要的各种模块,以及项目的配置信息(比如名称.版本.许可证等元数据).npm install命令根据这个配置文件 ...
- vue开发笔记
1.一定要弄明白什么是数据驱动,以前jQuery操作dom的那种思维模式可以不去考虑,在类似框架中任何一个效果的完成都是由数据驱动来完成的. 2.以.vue作为扩展名的文件,是vue组件,他是一个类, ...
- Js中的filter()方法
/* filter()方法使用指定的函数测试所有元素,并创建一个包含所有通过测试的元素的新数组. filter()基本语法: arr.filter(callback[, thisArg]) filte ...
- PHP搞笑注释代码-佛祖配美女
//////////////////////////////////////////////////////////////////// // _ooOoo_ // // o8888888o // / ...