Отображение изображения, загруженного с помощью CarrierWave, с помощью image_tag - PullRequest
0 голосов
/ 05 февраля 2020

Я пытаюсь загрузить изображения в свое приложение rails с помощью самоцвета carrierwave, но не могу понять, как заставить фотографии отображаться с помощью помощника image_tag. Я на самом деле не уверен, что фотографии загружаются, потому что я получаю NoMethodError для .image_url. Модель фотографий принадлежит модели мест.

<%= 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

Ответы [ 2 ]

0 голосов
/ 05 февраля 2020

В вашем picture_uploader.rb

class PictureUploader < CarrierWave::Uploader::Base
  #uncomment this line
  include CarrierWave::MiniMagick 
  storage :file

  def store_dir
   "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end  
end
0 голосов
/ 05 февраля 2020

Если вы опубликуете свой код модели и загрузчика, вам будет легче отследить проблему:

Я полагаю, что вы используете этот код, как указано в документации к перевозчику:

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

Тогда все, что вам нужно сделать, это использовать:

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

Подробнее о загрузчике читайте здесь https://github.com/carrierwaveuploader/carrierwave#getting -started

...