Html 使用数据库中的Rails显示图像
我试图在视图上显示我“存储”在数据库中的特定类型的图像。我有一个“产品”模型和一个“图像”模型,因为每个产品都有几种类型的图像(例如“画廊”、“特色”、“取消装箱图像”,它们简单地存储为类型0、1或2的属性) 我已将其放入HTML中:Html 使用数据库中的Rails显示图像,html,ruby-on-rails,database,Html,Ruby On Rails,Database,我试图在视图上显示我“存储”在数据库中的特定类型的图像。我有一个“产品”模型和一个“图像”模型,因为每个产品都有几种类型的图像(例如“画廊”、“特色”、“取消装箱图像”,它们简单地存储为类型0、1或2的属性) 我已将其放入HTML中: <%= image_tag @product.images.where(image_type: 2).first, :alt => 'product_image' %> “产品图片”%> 当我单击以检查元素时,我看到: <img alt
<%= image_tag @product.images.where(image_type: 2).first, :alt => 'product_image' %>
“产品图片”%>
当我单击以检查元素时,我看到:
<img alt="product_image" src="/images/#<Image:0x007fcba329f4c0>">
“>
有人能解释一下为什么会发生这种情况吗?它看起来像是在“我的资产/图像”文件夹中搜索图像,但在那里是什么?我的图像像lamp.png一样存储在数据库中
这是我的图像模型:
class Image < ActiveRecord::Base
include AASM
belongs_to :product
mount_uploader :file, FileUploader
validates :image_type, presence: true
enum image_type: [IMAGE_UNBOXING.to_s, IMAGE_GALLERY.to_s, IMAGE_FEATURED.to_s]
aasm column: :image_type do
Image.image_types.keys.each do |state_string|
state state_string.to_sym
end
end
end
类映像
谢谢。
@product.images.where(image\u type:2)。first
从数据库返回第一条记录,但对于image\u标记
,您应该为返回的记录指定url
或路径
使用url
attribute或您拥有的内容:
<%= image_tag @product.images.where(image_type: 2).first.url, :alt => 'product_image' %>
^^^
“产品图片”%>
^^^
发生了什么:image#u标记使用object#to#s方法返回模型标识
用来告诉你,这是一个物体
对象的图像类
0x007fcba329f4c0-对象实例的id
*_路径帮助器仅适用于控制器,因为它们是请求(浏览器)交互的对象
我将创建一个单独的控制器ImagesController,只使用“显示操作”。然后在视图中显示图像(例如)。然后图像标记将采用图像路径(@product.images.where(图像类型:2)。首先)
请确保您发送的MIME类型正确:
你可以发布你的图像模型吗?你是否尝试预编译你的资产?你需要将url传递给图像标记的src。我尝试了这个,但在加载时出现了一个错误:未定义的方法'url'用于#我指出必须使用返回图像完整路径的属性。我不知道它是
url
还是path
或image\u路径
。显示您的图像模型属性。按照您的模型,它应该类似于@product.images.where(图像类型:2)。first.file.url
或@product.images.where(图像类型:2).first.file.path
谢谢!这很有意义!@Kumo打开rails控制台
并找到您拥有的最后一个图像,image.last
并显示您看到的所有属性。