以 JSON/XML 格式呈现非活动记录对象 [RoR]

2024-04-12

我正在使用 ruby​​ gem whois 测试一个小型 whois API,由于 whois 响应的格式非常有趣,有时我被要求不要使用 ActiveRecord 来保存响应。

简而言之,它的工作原理如下:

  1. 用户从视图中以表单形式输入域名(操作“查找”=创建请求)
  2. 控制器捕获参数,然后通过实例化请求对象 [包含 whois 响应] 发送到模型(非 activerecord)
  3. 模型使用 whois gem 并将 whois 响应发送回控制器
  4. 控制器以不同的格式(html/json/xml)发送响应,但只有 html 获取对象。

这是我的控制器“请求”的操作“查找”的代码:

def lookup
domain = params[:domain]
@request = Request.new.search(domain)

respond_to do |format|
  if @request != nil
    format.html
    format.json { render :json => @request}
    format.xml {render :xml => @request}
  else
    format.html { render :new }
    format.json { render json: @request.errors, status: :unprocessable_entity }
  end
end

显然,我遇到了困难,因为我没有使用 ActiveRecord,并且由于 RoR 正在等待一个他不断吐出 nilClass 异常。

所以当我继续localhost:8080/requests/lookup一切都显示正常,@request 包含我想要的所有数据。 但是否localhost:8080/requests/lookup.json or localhost:8080/requests/lookup.xml什么都没有显示,如果我尝试在构建器(Jbuilder/XMLBuilder)中给出指令,它会抛出 nilClass 异常,证明变量范围不是那么全局......

不,我不认为放入变量会话是一个好主意:我只会将它用于单个查询。

如果需要,我很乐意提供更多我的代码,如果它可以帮助您理解我的问题。我知道 AR 是一条出路,但尽管如此,我很好奇如何在这种情况下绕过它。

谢谢 !


即使您不使用 ActiveRecord,也可以使用 ActiveModel。 Rails 4 让一切变得非常简单。您还可以添加ActiveModel::序列化 http://api.rubyonrails.org/classes/ActiveModel/Serialization.html它允许您序列化对象.to_json and .to_xml

class WhoisLookup
  include ActiveModel::Model
  include ActiveModel::Serializers::JSON
  include ActiveModel::Serializers::Xml

  attr_accessor :search_term # ...

  # you can use all the ActiveModel goodies
  validates :search_term, presence: true, length: {in:2..255}
end

ActiveModel::Serialization 将允许您使用:

format.json { render :json => @result } # calls @result.to_json

附言。不要使用@request对于变量命名(也许@result?)你一定会遇到问题和困惑ActionDispatch::Request.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

以 JSON/XML 格式呈现非活动记录对象 [RoR] 的相关文章

  • Heroku Rails 应用程序级别不记录日志

    我在 Heroku 上有一个 Rails 应用程序 它没有在应用程序级别进行日志记录 当前版本 红宝石1 9 3 导轨3 1 3 在 config environment development rb 中有以下几行 config logge
  • jq:将对象数组转换为对象

    我收到了来自curl的回复 格式如下 list value 1 id 12 value 15 id 13 value 4 id 14 给定 id 之间的映射 如下所示 12 newId1 13 newId2 14 newId3 我想做这个
  • pyspark 将 twitter json 流式传输到 DF

    我正在从事集成工作spark streaming with twitter using pythonAPI 我看到的大多数示例或代码片段和博客是他们从Twitter JSON文件进行最终处理 但根据我的用例 我需要所有字段twitter J
  • Elasticsearch:预期的字段名称,但得到了 START_OBJECT

    我一直在尝试运行以下查询 但每次运行时都会收到以下错误 nested ElasticsearchParseException Expected field name but got START OBJECT field value fact
  • 使用 ruby​​ 调整动画 GIF 图像的大小?

    我正在尝试将 GIF 图像调整为不同的尺寸 我在 ruby 中使用 RMagick 库 但对于某些 gif 图像 即使我缩小 GIF 的大小 文件大小似乎也会增加 我正在以相同的纵横比调整图像图像的大小 这是我的代码 require rma
  • Watir Webdriver 加载 Chrome 扩展

    我正在尝试使用 Watir 加载 chrome 扩展 但遇到了问题 我发现这个相关问题 能够启动带有 watir webdriver 加载扩展的 chrome https stackoverflow com questions 125867
  • Rails 3:如何让用户在表单中至少选择一个复选框?

    我有一个表单 用户在提交表单之前必须选中至少一个复选框 有没有任何插件可以处理这个问题或者jquery可以应用于我的表单 不幸的是我完全是一个 jquery 菜鸟 上面的所有答案都显示了如何在客户端执行此操作 这确实可能更好 正如您的问题标
  • 我可以让这个 Ruby 代码更快并且/或使用更少的内存吗?

    我有一个Array of StringRuby 中的对象由如下单词组成 animals cat horse dog cat dog bird dog sheep chicken cow 我想将其转换为另一个Array of String对象
  • 比较 ruby​​ 哈希值[重复]

    这个问题在这里已经有答案了 可能的重复 如何比较两个哈希值 https stackoverflow com questions 4928789 how do i compare two hashes 我有两个 ruby 哈希值 本质上是模型
  • 如何反序列化键名.Net中包含点(.)的Json字符串[重复]

    这个问题在这里已经有答案了 odata metadata sometext odata nextLink sometext value odata type SP Data RegionsListItem odata id 07404daa
  • 嵌套 has_one 关联的强参数

    我似乎遗漏了一些明显的东西 但我无法允许嵌套的属性has one协会 控制器 def create crossword Crossword new crossword params if crossword save render show
  • Oracle 中的 Json_object 返回 ORA-00907: 缺少右括号

    我正在尝试将 Oracle 表数据转换为 JSON 文件 我有三个数据库 下面的代码在一个数据库中以 JSON 文件形式提供输出 但其他两个数据库抛出ORA 00907 missing right parenthesis error 从语法
  • 高效地重新安排 ActiveJob (resque/sidekiq)

    我正在玩Rails 4 2应用程序使用ActiveJob受支持resque sidekiq用于电子邮件安排 当用户创建时事通讯活动时 会创建一个新作业并安排在特定日期 这一切都很好 但是当用户更改交货日期时会发生什么 在这种情况下 每个作业
  • 如何使用 jq 从多个嵌套数组中提取键

    SETUP 我试图弄清楚 jq 过滤器是如何工作的 但在找出嵌套数组时遇到了困难 使用下面的数据我无法做出平的 5 键输出 我可以得到 1 个键和 4 个空值 或者 4 个键和 1 个空值 但不能得到所有 5 个键 1 个键 4 个空值 R
  • 即使路由存在,Rspec 命名空间路由规范也会失败

    我在用着rspec rails 2 8 1 and 导轨3 1 3 我正在尝试测试 Admin ZonesController 的路由 我已经通过运行验证了浏览器中存在该路由rake routes 我没有使用 ActiveRecord 如果
  • SQL Server OPENJSON读取嵌套json

    我有一些想要在 SQL Server 2016 中解析的 json 有一个项目 gt 结构 gt 属性的层次结构 我想编写一个解析整个层次结构的查询 但我不想通过索引号指定任何元素 即我不想做这样的事情 openjson json 0 or
  • Rails 中的字母分页

    我正在寻找 Rails 的宝石用于字母分页 我希望我可以在结果中找到第一个字母的列表 我的意思是 如果没有以 a 开头的行 我不希望 a 显示在分页链接上 这种宝石已经存在了吗 提前致谢 这根本不难创建 例如 如果您有一个find 也许像
  • 在 Rails 中本地化嵌套虚拟属性

    怎么可能本地化嵌套虚拟属性在 Rails 中 该模型 class User lt ActiveRecord Base attr accessor company information This is used in callbacks e
  • 无法解决 Rails 设置中的错误 - `LoadError: 无法加载此类文件 -- active_storage/engine`

    我正在尝试设置一个新的 Rails 应用程序 但遇到了一个我似乎无法解决的问题 当尝试跑步时rake db drop or rake db create我不断收到错误 LoadError cannot load such file acti
  • rake db 问题:迁移 -

    我无法为 Ruby on Rails 设置 MySQL 数据库 设置数据库并确保 config database yml 文件匹配后 我遇到了以下错误消息 U Rails alpha gt rake db migrate trace in

随机推荐

  • Chrome 和 Firefox 中相同框阴影大小的不同输出

    为什么尺寸为box shadowChrome 和 Firefox 有什么不同 box shadow 0 0 4px aaa inset Chrome Firefox 我已经尝试过以下方法 但它在最新的 Firefox 中不起作用 moz b
  • 在 DOM 中多次使用 React.render() 可以吗?

    我想使用 React 在整个 DOM 中多次添加组件 这把小提琴 http jsfiddle net ypcrumble gs7k1kth 1 显示了我想要做什么 并且它不会引发任何错误 这是代码 HTML div div div div
  • ASP.NET Core 中的自定义授权属性

    我正在研究 asp net core 但我不明白一些事情 例如 在 mvc net 5 中 我们可以使用 AuthorizeAttribute 创建类来过滤和授权操作 并将属性设置为操作 如下所示 public class AdminAut
  • 从对象数组中删除原始对象和重复对象 - JS

    我有一系列对象 const arr title sky artist Jon id 1 title rain artist Paul id 2 title sky artist Jon id 1 我想根据 id 从数组中删除所有重复项 最终
  • JpaRepository 缓存新创建的对象。怎么刷新呢?

    我有一个 JpaRepository 在 Spring MVC 应用程序中保存新创建的实体 这个实体看起来像这样 非常简单 Entity public class Translation Id GeneratedValue strategy
  • 将日期字符串解析为某个 Java 对象

    我正在从事一个读取文件和处理数据的项目 例如 我必须处理日期 2012 01 10 23 13 26 2012 年 1 月 13 日 我找到了 Joda 包 有点有趣 但不知道它是否是最简单的 我能够将第一个示例解析为 DateTime 对
  • 如何仅在 DateTime 对象中删除 C# 中日期的时间部分?

    我需要删除日期时间的时间部分 或者可能有以下格式的日期object形式不以string 06 26 2009 00 00 00 000 我无法使用任何string转换方法 因为我需要日期object form 我尝试首先转换DateTime
  • 如何使用 Vuejs 加载 url

    我正在建立一个包含几篇文章的网站 我正在使用 Vue Router 目前我的文章的 url 看起来像 article id 例如 http localhost 8080 article 85 如何在 URL 中添加文章标题 以便它可以htt
  • 如何在 Bitbucket wiki 上的 Markdown 中转义“@”

    谁知道如何逃脱 BitBucket wiki 上 markdown 中的字符 就我而言 后面紧跟着恰好是某人的用户名的单词 即 blahblah 到目前为止我尝试过的 64 但这些都不起作用 屏蔽被忽略 当我使用字符代码时 它只是按原样输出
  • DatePickerDialog 首先显示年份选择器

    我希望我的 DatePickerDialog 一打开就显示年份列表 For example when I show the dialog I see the calendar view If I tap on the text 1900 t
  • 在 div 类中使用 javascript 搜索文本 [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我想制作一个脚本 在其中我可以使用 document getElementByClassName 自动搜索某个字符串 没有文本框或任何内容
  • C++/CLR 托管单元测试存在链接器错误

    当将任何托管类包含到我的托管单元测试中时 编译会输出以下错误 1 gt UnitTest obj error LNK2020 unresolved token 0A000360 extern C int cdecl CrtDbgReport
  • GCC 的“vstring”是什么?

    我读了一些 GCC 错误报告 那里的人在谈论 vstring 搜索网络我注意到http gcc gnu org onlinedocs libstdc libstdc html USERS 4 2 vstring 8h html http g
  • sql server 2008 Management Studio 不检查我的查询的语法

    一如既往 我的惊讶将会有一个合理的解释 但在那之前 我有这个查询 delete from Photo where hs id in select hs id from HotelSupplier where id 142 执行得很好 后来我
  • Rails pub/sub 与 faye

    在 Rails 应用程序中 我使用 Faye 机架适配器 来推送通知 用于聊天 我想将 Faye 用于另一个用例 更多推送通知 但我似乎无法弄清楚 在我的应用程序中 可以从后台作业创建模型 因此我想在创建模型时刷新我的视图之一 例如索引操作
  • Python3:将PDF下载到内存并将第一页转换为图像

    我尝试执行以下操作 将 PDF 文件下载到内存 将第一页转换为图像 将该图像与 tweepy 一起使用 我尝试了以下代码 但遇到了错误 from PIL import Image from pdf2image import convert
  • 获取 JScrollPane 中显示的组件

    我有一个包含 JPanel 的 JScrollPane 我用许多按钮填充了这个 JPanel 是否有可能获取当前显示的按钮 我知道我可以通过以下方式访问 JPanel 的子项jpanel getComponents 但这些都是此窗格中的所有
  • NestJs - 使用具有 2 个主体类选项的类验证器验证请求主体

    我有一个休息电话 它可能会收到类型为 classA 和 classB 的主体 我需要将其保留为两个不同的类 例子 classes class ClassA IsString Length 1 128 public readonly name
  • “Skipcond”在 MARIE 汇编语言中如何工作?

    我正在尝试理解 MARIE 汇编语言 我不太明白skipcond为了 做类似的事情 lt or gt 或乘法或除法 我正在采用这个简单的程序 x 1 while x lt 10 do x x 1 endwhile 我不明白的是如何使用某些跳
  • 以 JSON/XML 格式呈现非活动记录对象 [RoR]

    我正在使用 ruby gem whois 测试一个小型 whois API 由于 whois 响应的格式非常有趣 有时我被要求不要使用 ActiveRecord 来保存响应 简而言之 它的工作原理如下 用户从视图中以表单形式输入域名 操作