我使用Carrierwave和Rails上传和显示图片。我一直在将它用于我网站的文章和其他部分而没有任何问题但是由于某种原因它不能用于我刚创建的模型。我可以看到没有图像渲染的图像标记的空间,然后在页面加载时快速消失。直到我尝试使用这个与我的其他模型没有太大区别的模型之后,才发生这样的事情:
class Ad < ActiveRecord::Base
validates_numericality_of :zip_code
validates_presence_of :image, :advertiser
mount_uploader :image, ImageUploader
end
我的创建和索引操作:
def create
@ad = Ad.new(params[:ad].permit(:image, :advertiser, :zip_code))
if @ad.save
redirect_to :back
else
flash[:error] = "Invalid input"
redirect_to :back
end
end
def index
@new_ad = Ad.new
@ads = Ad.all.reverse
end
我的_new部分:
<div id="card">
<%= form_for @new_ad, html: {multipart: true, "data-ajax" => false} do |f| %>
<p>
<%= f.file_field :image %>
</p>
<p>
<%= f.text_field :advertiser, placeholder: "Advertiser" %>
</p>
<p>
<%= f.text_field :zip_code, placeholder: "Zip code" %>
</p>
<p>
<%= f.submit "Upload" %>
</p>
<% end %>
</div></br>
我的索引视图:
<%= render "new" %>
<% for ad in @ads %>
<div id="card">
<div align="center">
<%= image_tag ad.image %>
<%= ad.advertiser %>
<%= ad.zip_code %>
</div>
</div></br>
<% end %>
答案 0 :(得分:0)
根据我的理解问题是你的索引视图。
<%= image_tag ad.image %>
您正在使用ad.image,这将返回您的imageuploader对象而非图像路径。因此,您可以使用ad.image.url(相对路径)或ad.image.current_path(绝对路径)来代替使用ad.image
<%= image_tag ad.image.url %>