【发布时间】:2013-12-15 14:11:00
【问题描述】:
我正在尝试显示来自 API 的一些信息。
我有这个代码:
<% recco = Model.find_by_id(activity.trackable.id %>
现在,渲染以下行将输出我想要的 ID:
<%= recco.item_id %>
但是,当我想链接到这个项目并且我需要 API 中的名称时,有些代码会失败,有些则不会。这是我的行:
<%= link_to @client.author(recco.item_id).name, book_path(recco.item_id) %>
book_path 工作并显示指向带有 ID 的正确 URL 的链接。尝试从 API 获取名称的客户端返回未找到。
但是,如果我尝试删除 recco.item_id 并将其硬编码为:
<%= link_to @client.author("7").name, book_path(recco.item_id) %>
它可以工作并显示作者姓名。 API请求是否有特殊原因无法理解recco.item_id是一个数字? book_path 可以很好地显示链接。
【问题讨论】:
-
@client代表什么,作者方法的定义是什么
-
@client 用于 goodreads api:
@client = Goodreads.new(Goodreads.configuration) -
你在使用这里的 gem,github.com/sosedoff/goodreads。它使用地下的 RestClient 来执行 http 请求,所以我认为传入的 id 是字符串还是数字都不会影响这个问题。也许您查询的作者不存在。有没有输出recco.item_id的值,看看goodreads上是否真的存在。
-
是的,通过传递值“7”,正如我提到的那样,会返回 goodreads api 中预期的作者姓名。但是当传递 recco.item_id (在这种情况下是 7 )只返回 Goodreads::NotFound
标签: ruby-on-rails ruby api parameter-passing partials