我最近将我的应用程序克隆到新计算机上,并下载了Imagemagick。我正在使用Paperclip gem为用户添加头像。在旧计算机上,Paperclip工作得很好,但在新计算机上,尽管用户似乎保存了头像,<%= image_tag @user.avatar_url(:size) %>
显示图像的标题,而不是图像本身。我唯一能想到的是我可能已经下载了不同形式的Imagemagick,因为我捆绑的所有其他内容都已安装。有Paperclip经验的人是否知道可能导致这种情况的原因?
头像保存在我的application/public/system/users/avatars/000/000
文件夹中。
视图/用户/ crop.html.erb
<% content_for(:head) do %>
<%= stylesheet_link_tag "jquery.Jcrop" %>
<%= javascript_include_tag "jquery.Jcrop.min" %>
<script type="text/javascript" charset="utf-8">
ready = $(function() {
$("#cropbox").Jcrop();
});
</script>
<% end %>
$(document).ready(ready);
$(document).on('page:load', ready);
<%= image_tag @user.avatar.url(:large), :id => "cropbox" %>
的Gemfile:
gem "paperclip", :git => "git://github.com/thoughtbot/paperclip.git"
# ...
模型/ user.rb
class User < ActiveRecord::Base
has_attached_file :avatar, :styles => { :large => "500x500", :medium => "300x300>", :thumb => "50x50!" }, :default_url => "/images/:style/missing.png"
validates_attachment_content_type :avatar, :content_type => /\Aimage\/.*\Z/
# ...
控制器/ users.rb的
class UsersController < ApplicationController
def create
# ...
if @user.save
render :action => "crop"
else
flash[:notice] = "Failed"
redirect_to new_user_path
end
end
private
def user_params
params.require(:user).permit(:name, :avatar)
end
视图/用户/ new.html.erb
<%= form_for @user, :url => users_path, :html => { :multipart => true } do |f| %>
<%= f.text_field :name, :placeholder => "Name" %>
<br>
<%= f.label :display_picture %>
<%= f.file_field :avatar %>
<br>
<%= f.submit "Submit", class: "btn btn-primary" %>
<% end %>
schema.rb
# ...
create_table "users", force: true do |t|
t.string "name"
t.datetime "created_at"
t.datetime "updated_at"
t.string "avatar_file_name"
t.string "avatar_content_type"
t.integer "avatar_file_size"
t.datetime "avatar_updated_at"
# ...
end
答案 0 :(得分:1)
如果您的代码看起来一切正常,有时一切都与您的代码完全正确。
为了避免像这样的拔毛问题,请有一份清单
bundle install
,我都建议您重新启动服务器。您可能不需要,但在出现错误的第一个迹象时尝试此操作。