Я очень плохо знаком с рельсами и пытаюсь заставить работать скрепку для профилей пользователей на моем сайте. Я установил скрепку в моем gemfile и установил комплект. У меня возникла проблема с использованием: has_attached_file, поэтому я использовал 'rails plugin install github / path / to / paperclip.git' и перезапустил webrick. После этого все, казалось, работало, вплоть до рендеринга моей новой формы и предоставления мне возможности загрузить файл.
Когда я пытаюсь загрузить фотографию в профиль пользователя, он просто возвращает меня на страницу пользователя, не сообщая, что она была успешно обновлена, и не показывая мое недавно загруженное изображение. Он меняет имя или адрес электронной почты, если вы меняете их. Не похоже, что оно фактически помещает изображение в путь, указанный в файле readme на Github для paperclip. Здесь какой-то конфигурационный файл я не вижу?
Я запустил «rails Generate paperclip user photo», и ниже приведен соответствующий код:
Из моделей / user.rb
class User < ActiveRecord::Base
attr_accessible :name, :email
email_regex = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
validates :name, :presence => true,
:length => { :maximum => 50 }
validates :email, :presence => true,
:format => { :with => email_regex },
:uniqueness => { :case_sensitive => false }
#code below tells rails that our users have photos
has_attached_file :photo
end
Из просмотров / пользователей / show.html.erb:
<b>Username: </b><%= @user.name %>
<p><b>Email Address: </b><%= @user.email %></p>
<p><b>Avatar: </b><% if @user.photo? %><%= image_tag @user.photo.url %><% else %>No Photo Uploaded!<% end %></p>
Из просмотров / пользователей / _form.html.erb
<% form_for :user, @user, :url => user_path, :html => { :multipart => true } do |f| %>
<p>
<%= f.label :name.to_s << ': ' %>
<%= f.text_field :name %>
</p>
<p>
<%= f.label 'Email Address:' %>
<%= f.text_field :email %>
</p>
<p>
<%= f.label :Avatar.to_s << ': ' %>
<%= f.file_field :photo %>
</p>
<p>
<%= f.submit 'Save' %>
</p>
<% end %>
Редактировать: добавление кода контроллера:
Из controllers / users_controller.rb:
class UsersController < ApplicationController
before_filter :authenticate, :except => [:index]
def new
@user = User.new
end
def create
@user = User.new(params[:user])
respond_to do |format|
if @user.save
format.html { redirect_to(@user, :notice => 'User was successfully created.') }
**code removed for brevity**
end
end
end