我是rails的新手,并试图让paperclip在我的网站上为用户个人资料工作。我在我的gemfile和bundle中安装了paperclip gem。我有一个问题使用:has_attached_file所以我然后使用'rails plugin install github / path / to / paperclip.git'并重新启动webrick。之后,所有内容似乎都在渲染我的新表单并为我提供上传文件的选项。
当我尝试将照片上传到用户个人资料时,它只会让我回到用户的页面,而不会告诉我它已成功更新并且没有显示我新上传的图像。如果您更改名称或电子邮件地址,它会调整它。看起来它实际上并没有将图像放入Github上自述文件中列出的回形针路径。在这里有一些配置文件,我没有看到?
我运行'rails generate paperclip用户照片',下面是一些相关的代码:
来自models / 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
来自views / users / 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>
来自views / users / _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
答案 0 :(得分:0)
有些问题:您是否在rake db:migrate
之后运行了rails generate paperclip user photo
?在您的控制器中,您实际上有一个show
方法来加载已保存的用户,从而显示照片吗?
同时要显示:notice
消息,您需要使用<%= flash[:notice] =>
将其添加到应用程序模板中的某个位置。
答案 1 :(得分:0)
我已经解决了这个问题。这个问题似乎是我在新用户和编辑用户界面上使用_form部分的问题。我在原始问题中留下了错误的模板代码,我将在此处发布固定代码。 :user和:url =&gt;价值被删除。
来自/views/user/_form.html.erb
<% form_for @user, :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 %>