Rails + rabl

rabl-开源 RABL-可重复的外壳环境。 Shell脚本作为可重用函数的库提供了各种可重复的功能。 自动执行选项解析,用法消息,提示和其他各种实用程序功能。 目前以GNU bash为目标。 立即下载

当我们使用rails generate scaffold的方式生成MVC的时候,rails会自动给我们生成一系列的文件,包括了如何用json显示model的view。这样其实默认了你的系统是一个CRUD的系统,但是我们知道RESTful不是CRUD。把model直接暴露出去不是一个很好的选择。


rabl是一个DSL可以方便定制生成对象的显示信息的gem:https://github.com/nesquena/rabl


下面是具体的操作过程:


1.首先创建一个新的rails工程:

rails new rabl-app


2.在Gemfile中添加rabl的依赖:

gem 'rabl'


3.创建Model:

rails g model Blog title:string author:string content:text


4.迁移数据库:

rake db:migrate


5.创建controller:

在app/controllers下创建一个新的空文件blogs_controller.rb

内容如下:

class BlogsController < ApplicationController
   def index
      @blogs = Blog.all
   end

   def show
      @blog = Blog.find(params[:id])

   end
end

可以使用stub数据用于测试:

@blog = Blog.new({:id => 3, :title => "good title", :author => "good author", :content => "good content"})


6.创建rabl对应的view:

在app/views下创建一个新的空文件夹blogs:

在app/views下创建两个新文件:index.json.rabl和show.json.rabl


show.json.rabl:

object @blog

attributes :id, :title, :author, :content


index.json.rabl:

collection @blogs

extends "blogs/show"


7.配置route

在routes.rb中:

Rails.application.routes.draw do
  resources :blogs
end


8.启动server

rails s


访问:http://localhost:3000/blogs/3.json

得到结果:

{"blog":{"id":3,"title":"good title","author":"good author","content":"good content"}}

我们上面的例子只是演示了如何在rails中使用rabl,并不是说上面的显示方法就是好的构造对象现实的方法,更多的可以看看:

https://github.com/nesquena/rabl

http://railscasts.com/episodes/322-rabl?view=similar

视觉SLAM的前段后端最详细的梳理(硕士入门知识框架更新) 文章目录视觉SLAM的组成结构视觉里程计(VO)-特征点法 -构建稀疏点云地图-直接法 -构建稠密或半稠密的地图 --需要使用 RGB-D 传感器视觉里程计--总结:SLAM 后端研究滤波器法非线性优化后端方式的差异(有五种优化方式):单目视觉里程计的初始化:运动估计:半直接法运动估计的优化方案:关于解决累计误差的一些方法:关键帧的建图及后端优化:特征的深度估计:图优化的后端研究:视觉与IMU融合的分类:视觉与IMU的融合的优势:存在的问题:优秀的开源: 视觉SLAM的组成结构 视觉里程计(VO) -特 阅读详情

相关推荐

LabVIEW QMH模板实战:从创建到错误处理的完整指南

本文提供LabVIEW QMH模板从创建到错误处理的完整实战指南。详细解析了队列消息处理器(QMH)作为LabVIEW核心设计模式如何实现任务解耦与异步通信,涵盖事件处理循环、消息处理循环的搭建、用户事件创建、队列引用管理、消息优先级控制以及健壮的错误处理机制,帮助开发者构建稳定、可维护的复杂应用程序。

white的博客 725

VGG16迁移学习CIFAR-10:冻结参数只训分类头

手头只有几千张标注图、训练集撑不满一个 GPU batch 时,从头训一个 CNN 往往既慢又过拟合。deeplearning-models 是 Sebastian Raschka 维护的模型笔记集,`pytorch_ipynb/transfer/` 下有一个现成的迁移学习示例:用 ImageNet 预训练的 VGG16,把 32×32 的 CIFAR-10 图像分类任务跑起来。 ## 最小可运

gitblog_00090的博客 659

VLSI数字信号处理系统——第九章滤波器和变换中的算法强度缩减

[课程学习] VLSI数字信号处理系统——第九章滤波器和变换中的算法强度缩减

夏风喃喃的博客 1604

rails 中 使用 rabl 来生成 json 的时候 ,一些小技巧

1. 用rails 的 to_json 方法生成的 json字符串 ,缺省是 不带表名的,比如下图:(主表是main_road_speed,子表是 finegrit) 而使用rabl 生成的json 是 带表名的,如下图: 为了使得这2种方法产生的json 都一致。可以采用下面2种方法: 都产生表名。那么就需要to_json 里面进行处理,处理的方法如下:

一个烂人的随手笔记 1783

GD32F450以太网(1):ETH 外设接口简介

GD32F450以太网ETH MAC外设接口简介

Zhichao_Zhang的博客 1万+

一文吃透 BMS:动力电池与储能共用的电池管控全架构详解

BMS作为电池系统的核心控制器,其技术深度和系统复杂性不容小觑。动力电池与储能系统虽然应用场景不同,但在核心架构上共享大量基础技术。成功的BMS设计需要在精度、可靠性、成本、功耗之间找到最佳平衡点。未来,随着电池技术的进步和智能化需求的提升,BMS将向着更高集成度、更强智能化、更优经济性的方向发展。无论是汽车工程师还是储能系统设计师,深入理解BMS的全栈架构,掌握其核心技术原理,都将是应对未来能源存储挑战的关键能力。核心要点回顾BMS采用分层分布式架构,硬件是基础,算法是灵魂。

小帽子的博客 337

刻意练习--Rails RESTful(一)

一本被人反复提及的书《哪儿来的天才》中说过,大部分所谓的天才都是通过反复的刻意练习得到的。当你的练习时间达到10000小时以后,你就会成为该领域的专家。 最近在学习rails如何实现RESTful Web Service。自己想给自己设计一个练习的模板,进行反复练习。开发过程采用的是TDD的方式进行开发。 练习背景: 我们涉及三个Domain对象,Products、Order

kiwi_coder 3812

QGis二次开发 —— 1、win10/win11搭建Vs2017-QGis3.40.12环境(附Vs2017环境效果,附全部问题解决方法)(附:Qt助手加入QGis接口说明文档)

QGis二次开发 —— 1、Windows10搭建Vs2017-QGis环境(附Vs2017环境效果)(附:Qt助手加入QGisA接口说明文档)

1362

Rabl-Rails 使用与安装教程

Rabl-Rails 使用与安装教程 1. 项目目录结构及介绍 Rabl-Rails 是基于 GitHub 上的仓库 ccocchi/rabl-rails 的一个实现,但请注意,具体的目录结构可能因版本更新而有所不同。一般来说,对于一个典型的 Rails 应用中集成Rabl或Rabl-Rails,你不会直接在该仓库找到一个完整的应用结构。然而,我们可以概览Rabl-Rails一般如何融入Rails...

gitblog_00169的博客 520

数学建模学习(75):全局敏感性分析Morris 方法

敏感性分析 (SA) 是分析不同应用条件下模型行为的基本实践。提出了许多 SA 技术,从简单的筛选方法到计算成本高昂的基于方差的方法。本篇内容我们通过将 Morris 方法来对模型进行分析。

全栈川川 1万+

RFC-only 与 SAProuter 场景下,让 Claude 真正参与 SAP ABAP 开发

SAP ABAP 开发这几年正在出现一个很有意思的变化。过去我们说开发工具,脑子里大多是 SE80、SE38、SE24、SEGW、Eclipse ADT,再往后是 BAS、VS Code、abapGit、ATC、CI/CD。现在又多了一层,Claude Code、Claude Desktop 这类 AI 编程助手开始通过 MCP 进入开发现场,不只是写一段示例代码,而是能读系统里的 ABAP 对象、搜索包、改源码、跑检查、辅助重构。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1617

推荐项目:RABL-rails,Rails应用的数据渲染利器

推荐项目:RABL-rails,Rails应用的数据渲染利器 在当今的Web开发中,高效且灵活地处理数据转换成为了后端工程师不可忽视的重要环节。对于基于Rails框架的应用来说,rabl-rails正是这样一个为JSON、XML和PLIST等格式提供快速、轻量级数据渲染方案的宝石。本文将带你深入了解这个宝藏库,探讨其技术优势、应用场景以及核心特点。 项目介绍 rabl-rails是一个针对Ruby...

gitblog_00371的博客 357

python中视觉检测怎么将多个面拍照的图片合成一个3d图像,用什么技术或者什么模型?

🏆本文收录于 《全栈Bug调优(实战版)》 专栏,该专栏专注于分享我在真实项目开发中遇到的各类疑难Bug及其深层成因,并系统提供高效、可复现的解决思路和实操方案。无论你是刚入行的新手开发者,还是拥有多年项目经验的资深工程师,本专栏都将为你提供一条系统化、高质量的问题排查与优化路径,助力你加速成长,攻克技术壁垒,迈向技术价值最大化与职业发展的更高峰🚀!

**My Coding Family** 708

Rabl-Rails: 更灵活的Rails模板引擎

Rabl-Rails: 更灵活的Rails模板引擎 项目简介 Rabl-Rails是一个轻量级的Rails模板引擎,它允许开发者以更灵活的方式生成JSON、XML和其他数据格式的响应。 功能特性 支持多种数据格式(如JSON、XML等)。 提供灵活的数据结构定义方式,可以方便地自定义嵌套数据结构。 支持自动编码错误处理。 可以与现有的Rails模板系统无缝集成。 使用场景 如果你正在开发一个R...

gitblog_00040的博客 432

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

怎么阻止html渲染页面,HAML阻止模板引擎渲染除HTML之外的其他内容

我正在使用Jbuilder(我也尝试使用Rabl)渲染json。 当我尝试呈现在我的应用程序的JBuilder模板它呈现 模板布局/应用文件中,并返回HTML为JSON(请参阅“内布局/应用”线):HAML阻止模板引擎渲染除HTML之外的其他内容Started GET "/random_photo.json"Processing by RidesController#random_photo as...

weixin_33955307的博客 211

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Ruby的各种API和Rails的API

[url]http://www.ruby-doc.org/core/[/url] 查看Ruby的各种API和到[url]http://api.rubyonrails.org/[/url] 查Rails的API. Ruby On Rails教程 http://guides.rubyonrails.org/

ylq365的专栏 200

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

msgpack android,GitHub - msgpack/msgpack-ruby: MessagePack implementation for Ruby / msgpack.org[Rub...

MessagePackMessagePack is an efficient binary serialization format.It lets you exchange data among multiple languages like JSON but it's faster and smaller.For example, small integers (like flags or e...

weixin_39618176的博客 186

有意练习--Rails RESTful(一)

书要反复提及《哪里有天才》在说,大多数所谓的天才是通过反复刻意练习获得。当你的练习时间达到10000几个小时后,。你将成为该领域的专家。 近期在学习rails怎样实现RESTful Web Service。自己想给自己设计一个练习的模板,进行重复练习。开发过程採用的是TDD的方式进行开发。 练习背景: 我们涉及三个Domain对象,Products、Orde...

aofan9566的博客 192

Security-101 零信任(Zero Trust)入门:核心原则、与传统架构的差异与纵深防御实战指南

本文基于 Security-101 课程的第 1.5 课时(translations/br/1.5 Zero trust.md)展开,系统讲解零信任(Zero Trust)安全模型的定义、六大核心原则,以及它如何颠覆传统"信任但验证"的边界防护思维。读完本文,你将掌握零信任的判定标准、与传统安全架构的四大差异,并理解纵深防御(Defense in Depth)与"瑞士奶酪"模型在真实安全体系中的落

gitblog_01412的博客 432

Sinatra 完全指南:用 Ruby DSL 快速构建 Web 应用的路由、模板、配置与部署实战

> 本文以 Sinatra 官方仓库(本镜像仓库根目录下的 [README.md](https://link.gitcode.com/i/b59d7b15185f4a27ec197dedb5b3c397))为骨架,结合 [lib/sinatra/base.rb](https://link.gitcode.com/i/7474eb7157444bf5af60efa8cfccfee1)、[lib/si

gitblog_00371的博客 242

ruby计算平方和开方

计算平方和开方: 计算3的平方: 3 ** 2 #=> 9 计算9的开方: 9 ** (1.0/2) #=> 3 计算n次幂与n次底 计算3的3次幂: 3 ** 3 #=> 27 计算27的3次底: 27 ** (1.0/3) #=> 3

kiwi_coder 8003

Rails中如何避免N+1问题

N+1问题 N+1问题是数据库访问中最常见的一个性能问题,首先介绍一下什么是N+1问题: 举个例子,我们数据库中有两张表,一个是Customers,一个是Orders。Orders中含有一个外键customer_id,指向了Customers的主键id。 想要得到所有Customer以及其分别对应的Order,一种写法是 SELECT * FROM Customers;

kiwi_coder 4277

一个有意思的Ruby Webdriver超时问题的解决过程

因为写ruby的时候感觉混身上下都拽起来了,所以比较喜欢用ruby写代码。今天遇到了一个webdriver timeout的问题,问题本身还是因为我对webdriver不了解以及破文档导致的。首先我们把问题简化一下: driver = Selenium::WebDriver.for :safari driver.navigate.to "http://www.faraway.com" wait = Selenium::WebDriver::Wait.new(:timeout => 1000) # seco

kiwi_coder 3961
上一篇: Jersey中处理POST格式的Best Practice
下一篇: 刻意练习--Rails RESTful(一)
kiwi小白
博客等级 码龄14年 153粉丝 154原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值