首页 > 解决方案 > 如何从 API 中检索 URL 的图像并将其显示在我的视图中

问题描述

这不是一个项目,我只是在搞乱漫画 API。

我成功地从一本书中检索到封面的 URL,但我很难显示它。该链接有效,但不会显示在我的视图中。它仅显示损坏的图像图标。

在这个第三方网站中,每本书都有一个 6 位数的代码作为标识符,因此 api gem 可以输入给定的代码,它会检索有关这本书的信息。

作为一个例子,我只是放了一些随机数,我试图像标题和封面一样显示它。

API gem https://github.com/groussell42/nhentai-api/blob/master/lib/nhentai-api.rb

我可以成功检索书名并将其显示在页面标题中。我打印了 URL 的图像只是为了表明我也在检索链接。

路线.rb:

Rails.application.routes.draw do
  get 'mangas' => 'mangas#show'
end

显示.html.erb

<h1>Showing <%= @manga.title %></h1>
<%= @manga.cover%>
<%= image_tag @manga.cover %>

mangas_controller.rb

class MangasController < ApplicationController
  def show
    @manga = Doujinshi.new(250164)
  end
end

以下是我的观点内容:

<html>
  <body>
    <h1>Showing (C94) [OrangeMaru(YD)] Yaou (Fate/Grand Order) [English] [KyuSee]</h1>
https://t.nhentai.net/galleries/1302012/cover.jpg
<img src="https://t.nhentai.net/galleries/1302012/cover.jpg">


</body></html>

标签: ruby-on-railsruby

解决方案


不能直接使用链接显示图片,因为服务器不允许,也称为防盗链

您必须在后端下载图像,然后使用您自己的链接显示它。

控制器:

require "open-uri"

File.open('public/cover.jpg', 'wb') do |fo|
  fo.write open("https://t.nhentai.net/galleries/1302012/cover.jpg").read 
end

看法:

<img src="cover.jpg"/>

推荐阅读