首页 > 解决方案 > Rails:无法显示附加到另一个变量的唯一图像

问题描述

我正在创建一个可以浏览艺术家、专辑和歌曲的网站。当我进入艺术家的展示页面时,我希望它显示他们的专辑和封面。如果我只使用文件名,我可以让我的网页显示我想要的图像,但我希望为每个艺术家的专辑显示一个唯一的图像,而不是每个专辑都显示相同的图像。

专辑.rb

class Album < ApplicationRecord
    has_one_attached :artwork
    belongs_to :artist
    has_many :songs
end

种子.rb

lz = Album.create( title: "Led Zeppelin", release_date: 1969, artist_id: zepp.id, artwork: lz.jpg )
lzII = Album.create( title: "Led Zeppelin II", release_date: 1969, artist_id: zepp.id, artwork: lzII.jpg )
lzIII = Album.create( title: "Led Zeppelin III", release_date: 1970, artist_id: zepp.id, artwork: lzIII.jpg )
lzIV = Album.create( title: "Led Zeppelin IV", release_date: 1971, artist_id: zepp.id, artwork: lzIV.jpg )
album.artwork.attach(params[:artwork])

我的艺术家/show.html.erb

<h1> <%= @artist.name %> </h1>

<% @artist.albums.each do |album| %>
    <%= image_tag (album.artwork) %>
<p> <%= link_to album.title, album_path(album) %> </p>

<% end %>

我收到一个错误(无法将图像解析为 URL:未定义的方法 `persisted?')

我播种的方式有问题吗?我的 .jpgs 在我的 assest/images 文件夹中有与专辑实例相同的标题。

如果我像这样添加 image_url

<% @artist.albums.each do |album| %>
    <%= image_tag image_url(album.artwork) %>
<p> <%= link_to album.title, album_path(album) %> </p>
<% end %>

我明白了(资产管道中不存在资产“”。)

编辑 只是想运行rails db:seed我可能忘记这样做并得到一个错误(未定义的方法分配.jpg)。看起来它不喜欢我尝试将专辑连接到艺术品并尝试调用 jpg 方法而不是将其作为文件类型读取的方式。

标签: ruby-on-railsrubyimage

解决方案


推荐阅读