【问题标题】:Rails: Loading Image from ModelRails:从模型加载图像
【发布时间】:2015-02-04 15:26:12
【问题描述】:

我是 Rails 新手,如果这是一个基本问题并且我遗漏了一些东西,请原谅我。

我有一个模型来存储图像文件的位置、文件名和扩展名。我将它们连接在一起,并使用 image_tag 将它们写入我的模型中的标签中。标记以正确的路径正确呈现在 HTML 中;但是图像显示为空白。我已将图像添加到 app/assets/images 中,所以一切都应该在正确的位置,但我无法弄清楚为什么图像没有呈现。这是我所拥有的:

型号

 class FileInfo < ActiveRecord::Base
    def fullPath
      "#{location}#{fileName}#{extension}"
    end
 end

查看

<% @letter.relatedMedia.each do |m| %>
    <%= image_tag(m.file_info.fullPath) %>
<% end %>

当图像标签以 HTML 呈现时,我将其作为源:

"/images/letters/some-image-file.jpg"

在我的应用程序中,文件存储在这里:

“app/assets/images/letters/some-image-file.jpg”

我是否将文件存储在错误的位置?路径写不正确吗?我真的不知道我哪里错了。

您能提供的任何帮助将不胜感激!

【问题讨论】:

    标签: html ruby-on-rails image


    【解决方案1】:

    将存储在数据库中的路径更改为letters/some-image-file.jpg。您不需要完整路径,因为 Rails 资产管道会为您找到图像。

    阅读Rails Asset Pipeline 以更好地了解它的工作原理。

    【讨论】:

    • 实际上,这就是我要存储的内容。数据库有 letter/some-image-file.jpg。当它创建图像标签时,img 标签的来源(渲染时)是“/images/letters/some-image-file.jpg”。就好像它忽略了资产管道(无论是那个还是奇怪的东西都与路线有关)。
    • 如果您只将some-image-file.jpg 存储在您的数据库中,它会呈现吗?
    • 不,它没有。从我所做的所有挖掘来看,这似乎与我的资产管道配置有关。写出“letters/some-image-file.jpg”或仅写出“some-image-file.jpg”会导致 image_tag 将源渲染为“images/letters/”等,当它应该将其渲染为“assets/”时字母/”等。很明显,我的资产管道配置中有些东西搞砸了,但我不知道是什么。
    • 没关系。我想到了。我在数据库中的文件扩展名是 .jpg 但服务器上的物理文件的扩展名是 .JPG 所以问题是由于区分大小写,服务器没有找到文件。将此归咎于我的愚蠢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-18
    • 2015-12-21
    • 2016-04-20
    • 1970-01-01
    相关资源
    最近更新 更多