【问题标题】:Rails - Opening an image in new tab using Active StorageRails - 使用 Active Storage 在新选项卡中打开图像
【发布时间】:2020-01-21 05:34:57
【问题描述】:

请耐心等待,因为我是 Rails 新手,这是我在 StackOverflow 上的第一个问题。

我已经以多种不同的方式搜索了这个问题,但还没有找到适合我的解决方案。我感觉我很接近,但也许我的语法有点不对劲,或者我应该尝试调用不同的方法。任何帮助将不胜感激。

不管怎样,解决我的问题。

我正在创建一个允许用户上传相册的网络应用程序。我有用户/专辑/类别/等。一切正常。当客人选择用户个人资料时,他们会看到与该用户关联/创建的相册。如果客人随后选择了相册,他们将被带到album_show 页面,该页面显示了相册中的所有图像(大小为200x200),该页面完全可以正常工作。我无法开始工作的是,我希望客人能够单击相册中的一张照片并打开一个带有全尺寸图像的新标签。我目前正在尝试使用这个

#album_show
<% @album.images.each do |image| %>
  <%= link_to image_tag(image.variant(resize: "200x200")), path_to :image, target: :_blank %>
<% end %>

我尝试替换掉“path_to :image)”并将其替换为“google.com”之类的网站,它可以按预期工作。单击图像会在 google.com 上打开一个新选项卡”(我这样做只是为了查看其余代码是否正常工作)

所以我需要知道的是,为了在新选项卡中打开所点击图像的全尺寸版本,我应该放什么而不是“path_to :image”?

提前感谢您的帮助,我知道这是一个菜鸟问题哈哈

【问题讨论】:

  • 图片是否以blob形式保存在数据库中?还是保存在服务器上?您可以在显示页面中发布您的图像行之一的 HTML 吗?
  • @Fernand 图像保存为 BLOBS。 Kamal 为我提供了所需的解决方案。感谢您抽出宝贵时间发表评论。

标签: html ruby rails-activestorage


【解决方案1】:

有几种方法可以做到这一点。您可以使用以下行而不是您的 link_to 链接。这正是您想要做的。

      <%= link_to image_tag(image.variant(resize: "200x200")), image %>

另一种使用 href 的方法。

<a href="<%= url_for image %>"><%= image_tag(image.variant(resize: "200x200")) %></a>

这将解决您的问题。

【讨论】:

  • 第一行正是我所需要的,谢谢。我本可以发誓我首先尝试过,但也许我有一个错字并且没有注意到然后假设没有工作。我确实在末尾添加了“,目标::_blank”,以便它打开一个新标签。
  • KamalPanhwar - 我还有一个简单的问题。当我单击我的图像并打开一个新选项卡时,如何编辑打开的选项卡中显示的内容?例如,如果我不想要完整尺寸的图像,而是说 600x600,或者如果我想为页面添加样式或添加广告代码等。提前致谢
  • 与您使用变体相同,将其更改为` ` it现在将打开 2000X200 大小。您可以根据需要更改尺寸。
猜你喜欢
  • 2021-12-29
  • 1970-01-01
  • 2012-08-21
  • 1970-01-01
  • 2017-04-28
  • 1970-01-01
  • 2018-11-16
  • 1970-01-01
  • 2015-03-04
相关资源
最近更新 更多