从Rails中的Unsplash API渲染图像

时间:2017-10-03 17:33:31

标签: ruby-on-rails ruby rest

我已经在Stack Overflow和Google上对此事进行了广泛的研究,但没有找到任何结论。由于我对Rails中的API使用概念完全陌生,我不得不提出一些建议。

我已按照the github page

的程序进行操作

我在application_helper.rb中包含了Unsplash帮助程序,如下所示

def show_photo
 Unsplash::Photo.find("tAKXap853rY")
end

并简单地添加

<%= image_tag show_photo %>

在我看来。

这会返回一个对象(所以连接性很好)

<img src="/images/#&lt;Unsplash::Photo:0x007fc4b2f953c0&gt;" alt="#
<unsplash::photo:0x007fc4b2f953c0>">

我知道Rails正在资产/图片文件夹中寻找图片

如何解析入站JSON并在我的Rails视图中呈现它?

2 个答案:

答案 0 :(得分:0)

您可以访问Photo对象中OpenStruct属性中的urls键,其中包含rawfullregularsmallthumb尺寸,也作为钥匙。

所以,只是为了测试你可以使用raw,例如:

<%= image_tag Unsplash::Photo.find('tAKXap853rY')[:urls][:raw] %>

或者我认为你可以修改你的方法来接受一个参数,它是图像的大小键,如:

module ApplicationHelper
  def show_photo(size)
    Unsplash::Photo.find("tAKXap853rY")[:urls][size.to_sym]
  end
end

然后:

<%= show_photo('raw') %> # 'full', 'regular', etc ...

答案 1 :(得分:0)

对于这个解决方案,我试图通过使用user.name方法显示摄影师的名字。 在控制台中,我可以得到以下内容:

photo = Unsplash::Photo.find("tAKXap853rY")
photo.user.name 

会回来  =&GT; &#34; Alejandro Escamilla&#34;。

但在RAILS:

def show_photo(size)
 @photo =Unsplash::Photo.find("tAKXap853rY")[:urls][size.to_sym]
end

只是尝试在我的视图中显示名称,如:

 <%= @photo.user.name %> will return "user undefined method".

.user.name可以在控制台中访问,但不能在rails中访问!我错过了什么?感谢