[使用image_tag显示通过CarrierWave上传的图像

问题描述 投票:0回答:1

我正在尝试使用carrierwave gem将图片上传到我的rails应用程序,但无法弄清楚如何使用image_tag帮助程序显示照片。我实际上不确定照片是否正在上传,因为我收到了.image_url的NoMethodError消息。照片模型属于场所模型。

<%= simple_form_for @photo, url: place_photos_path(@place) do |f| %>
  <%= f.input :caption %>
  <%= f.input :picture %>
  <%= f.submit "Add a photo", class: 'btn btn-primary' %>
<% end %>

<% if @place.photos.any? %>
      <% @place.photos.each do |photo| %>
        <%= photo.caption%>
        <%= image_tag photo.image_url.to_s if photo.image_url.present? %>
      <% end %>
<% end %>

class Photo < ApplicationRecord

    belongs_to :user
    belongs_to :place

      mount_uploader :picture, PictureUploader


end

class PictureUploader < CarrierWave::Uploader::Base
  
  storage :file
  
  def store_dir
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end
  
  class Place < ApplicationRecord

    belongs_to :user
    has_many :comments
    has_many :photos


    geocoded_by :address
    after_validation :geocode

    validates :name, presence: true
    validates :address, presence: true
    validates :description, presence: true
  end
end
html ruby-on-rails image image-uploading carrierwave
1个回答
0
投票

如果发布模型和上传者代码,将更容易发现问题:

我相信您使用的是载波文档中指定的代码:

class Photo < ActiveRecord::Base
  mount_uploader :picture, ImageUploader
end

然后您所要做的就是使用此:

<%= image_tag photo.picture.url, class: 'class-name' %>

有关上传者的更多信息,请从此处https://github.com/carrierwaveuploader/carrierwave#getting-started中读取

© www.soinside.com 2019 - 2024. All rights reserved.