Скрепка получает только «/ images / original / missing.png»

#ruby-on-rails #ruby #imagemagick #paperclip

#ruby-on-rails #ruby #imagemagick #скрепка

Вопрос:

Я не могу заставить загруженные изображения отображаться пользователю. Вот что я пробовал:

  1. рельсы генерируют каркас Имя пользователя: строка возраст: целое число
  2. рельсы генерируют аватар пользователя скрепки

Связанные драгоценные камни в Gemfile :

 gem "paperclip", "= 3.0.4"
gem "cocaine", "= 0.3.2"
  

Модель:

 class User < ActiveRecord::Base
  has_attached_file :avatar, :styles => {:medium => "300x300>", :thumb => "100x100>" }, :default_url => "/images/:style/missing.png"
  validates_attachment_content_type :avatar, :content_type => /Aimage/.*Z/
end
  

Просмотр формы (создание и редактирование):

 <%= form_for(@user , :html => {:multipart => true}) do |f| %>
  <% if @user.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@user.errors.count, "error") %> prohibited this user from being saved:</h2>

      <ul>
      <% @user.errors.full_messages.each do |msg| %>
        <li><%= msg %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

  <div class="field">
    <%= f.label :name %><br>
    <%= f.text_field :name %>
  </div>
  <div class="field">
    <%= f.label :age %><br>
    <%= f.number_field :age %>
  </div>
  <div class="field">
    <%= f.label :avatar %><br>
    <%= f.file_field :avatar%>
  </div>

  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>
  

Просмотр (Показать):

 <p id="notice"><%= notice %></p>

<p>
  <strong>Name:</strong>
  <%= @user.name %>
</p>

<p>
  <strong>Age:</strong>
  <%= @user.age %>
</p>

<p>
  <strong>Avatar:</strong>
  <%= image_tag @user.avatar.url %>
</p>

<%= link_to 'Edit', edit_user_path(@user) %> |
<%= link_to 'Back', users_path %>
  

По-прежнему продолжайте получать только: /images/original/missing.png

Комментарии:

1. Я бы посоветовал вам взглянуть на документацию paperclip api. Там вы увидите, что вам следует определить формат URL для ваших загруженных изображений, а также (хотя и не обязательно) путь, по которому он будет сохранен.

Ответ №1:

У вас есть пользовательский контроллер или вы используете Devise? Если это так, сверьте свой код с моим ниже.

  private

  # Use strong_parameters for attribute whitelisting
  # Be sure to update your create() and update() controller methods.

  def user_params
    params.require(:user).permit(:avatar)
  end