Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 使用数据库中的Rails显示图像_Html_Ruby On Rails_Database - Fatal编程技术网

Html 使用数据库中的Rails显示图像

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

我试图在视图上显示我“存储”在数据库中的特定类型的图像。我有一个“产品”模型和一个“图像”模型,因为每个产品都有几种类型的图像(例如“画廊”、“特色”、“取消装箱图像”,它们简单地存储为类型0、1或2的属性)

我已将其放入HTML中:

<%= 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
并显示您看到的所有属性。