#ruby-on-rails #ruby #imagemagick #paperclip
#ruby-on-rails #ruby #imagemagick #скрепка
Вопрос:
Я не могу заставить загруженные изображения отображаться пользователю. Вот что я пробовал:
- рельсы генерируют каркас Имя пользователя: строка возраст: целое число
- рельсы генерируют аватар пользователя скрепки
Связанные драгоценные камни в 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