jbuilder的set!方法重构接口
https://github.com/rails/jbuilder 的set!方法重构接口,
因为grape没法使用 jBuilder 的缓存,所以直接用 Rails 写 API
(1)多个图片
images: {
poster: {
url: "http://r4.ykimg.com/0510000057CD17166714C04FDC0628CE",
md5: "ee63b0a11cb1e39331d5ce11d38fceec"
},
right_top_corner: {
url: "http://r1.ykimg.com/0510000057CEA19C6714C063660BEB44",
md5: "e50d520de494538d4633086d46845a81"
}
},
原来的方法为
json.images do
component.pictures.each do |p|
if p.name == 'poster'
json.poster do
json.url "http://r#{rand(4) + 1}.xxx.com/#{p.url}"
json.md5 p.md5
end
end
if p.name == 'icon'
json.icon do
json.url "http://r#{rand(4) + 1}.xxx.com/#{p.url}"
json.md5 p.md5
end
end
if p.name == 'background'
json.background do
json.url "http://r#{rand(4) + 1}.xxx.com/#{p.url}"
json.md5 p.md5
end
end
end
end
精简后为
json.images do
component.pictures.each do |p|
json.set! p.name do
json.set! :url, "http://r#{rand(4) + 1}.ykimg.com/#{p.url}"
json.set! :md5, p.md5
end
end
end
(2)hints 是一个 hash,遍历 Hash 的文档http://ruby-doc.org/core-2.3.1/Hash.html#method-i-each
hint: {
left: "left",
right: ""
},
精简前
json.hint do
if component.hints.key?("left")
json.left component.hints["left"]
end
if component.hints.key?("center")
json.center component.hints["center"]
end
if component.hints.key?("right")
json.right component.hints["right"]
end
end
精简后
json.hint do
component.hints.each do |key,value|
json.set! key, value
end
end
jbuilder的set!方法重构接口的更多相关文章
- C#属性-索引器-里氏替换-多态-虚方法-抽象-接口-泛型-
1.属性 //属性的2种写法 public class person { private string _name; public string Name { get { return _name; ...
- GoLang之方法与接口
GoLang之方法与接口 Go语言没有沿袭传统面向对象编程中的诸多概念,比如继承.虚函数.构造函数和析构函数.隐藏的this指针等. 方法 Go 语言中同时有函数和方法.方法就是一个包含了接受者的函数 ...
- 使用 highchart 绘制柱状图的通用方法与接口
本文给出使用 highchart 绘制柱状图的通用方法与接口, 只要指定相应的数据结构和配置, 就可以直接拿来使用. 一. 数据结构与基本接口 一般绘制图形, 会涉及到较复杂的数据结构, 比如使 ...
- JAVAEE——Mybatis第一天:入门、jdbc存在的问题、架构介绍、入门程序、Dao的开发方法、接口的动态代理方式、SqlMapConfig.xml文件说明
1. 学习计划 第一天: 1.Mybatis的介绍 2.Mybatis的入门 a) 使用jdbc操作数据库存在的问题 b) Mybatis的架构 c) Mybatis的入门程序 3.Dao的开发方法 ...
- 初识 go 语言:方法,接口及并发
目录 方法,接口及并发 方法 接口 并发 信道 结束语 前言: go语言的第四篇文章,主要讲述go语言中的方法,包括指针,结构体,数组,切片,映射,函数闭包等,每个都提供了示例,可直接运行. 方法,接 ...
- Mock Server 实现post方法的接口(三)
Mock Server 实现post方法的接口(三) 1.mock server实现的接口,当request中未设置"method"时,会自动将所有method试一次,所以一定要指 ...
- mock server 实现get方法的接口(二)
mock server 实现get方法的接口(二) 下面是实现查询品牌的接口demo: 1.当response数据量小的时候,可以直接使用json, mock会自动设置headers为applicat ...
- Go 语言中的方法,接口和嵌入类型
https://studygolang.com/articles/1113 概述 在 Go 语言中,如果一个结构体和一个嵌入字段同时实现了相同的接口会发生什么呢?我们猜一下,可能有两个问题: 编译器会 ...
- Go 入门 - 方法和接口
方法和接口 方法的接受者 Go中没有类,取而代之的是在结构体上定义的方法 为了将方法(函数)绑定在某一类结构体上,我们在定义函数(方法)时引入"接受者"的概念. 方法接受者在它自己 ...
随机推荐
- Extjs GridPanel用法详解
Extjs GridPanel 提供了非常强大数据表格功能,在GridPanel可以展示数据列表,可以对数据列表进行选择.编辑等.在之前的Extjs MVC开发模式详解中,我们已经使用到了GridPa ...
- SVM松弛变量-记录毕业论文3
上一篇博客讨论了高维映射和核函数,也通过例子说明了将特征向量映射到高维空间中可以使其线性可分.然而,很多情况下的高维映射并不能保证线性可分,这时就可以通过加入松弛变量放松约束条件.同样这次的记录仍然通 ...
- JQuery------动态添加的元素on方法不起作用解决方法
转载: http://www.jb51.net/article/70342.htm
- Linq------各种查询语句大全
查询Title列的第一个值 string str = db.Webs.Select(p => p.Title).FirstOrDefault(); 根据ID,查询Title列的第一个值 b.We ...
- LINUX 下chmod|chown|chgrp和用法和区别
1.chgrp(转变文件所属用户组) chgrp 用户组 文件名 ###便是这个格了.若是整个目次下的都改,则加-R参数用于递归. 如:chgrp -R user smb.conf 2.chown(转 ...
- 使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【三】——Web Api入门
系列导航地址http://www.cnblogs.com/fzrain/p/3490137.html 前言 经过前2节的介绍,我们已经把数据访问层搭建好了,从本章开始就是Web Api部分了.在正式开 ...
- OC-常见错误 方法与函数的区别
对象方法: 1,减号 - 2,声明必须写在@interface和@end之间 实现必须写在@implement 和@end之间 3,对象方法只能由对象来调用 4,对象方法归类.对象所有 函数: 函 ...
- MVC中 _ViewStart _Layout Index三个页面中的加载顺序
MVC学习中忽然想到一个问题.. 在访问一个Index.cshtml页面时, MVC的加载顺序是怎么样的呢? 首先说下我的结论 . _ViewStart.cshtml . Index.cshtml . ...
- 程序日志输出实现-Log4j
学习开发的过程中,我们都应该用过System.out.println():来做一些调试工作,有时候确实很有用有没有.但是这种简单粗暴的方式让程序中到处存在着sysout.这种方式难免会有性能的影响,维 ...
- Orchard源码分析(4.3):Orchard.Events.EventsModule类(Event Bus)
概述 采用Event Bus模式(事件总线),可以使观察者模式中的观察者和被观察者实现解耦. 在.Net 中使用观察者模式,可以使用事件(委托)和接口(类).Orchard Event Bus使用的 ...