回形针头像显示图像标题,而不是图像

时间:2014-11-09 23:59:50

标签: javascript ruby-on-rails ruby ruby-on-rails-4 paperclip

我最近将我的应用程序克隆到新计算机上,并下载了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

1 个答案:

答案 0 :(得分:1)

如果您的代码看起来一切正常,有时一切都与您的代码完全正确。

为了避免像这样的拔毛问题,请有一份清单

  1. 确保您正在查看的代码是您正在更改的代码:有时,在不同的环境中工作时,我们作为程序员会感到厌倦或困惑,并简要地实现我们的由于我们没有将它们推送到heroku,或者因为我们在localhost上引用了错误的端口,因此未发生更改。)
  2. 重启服务器重大更改:无论何时更改config.rb或运行bundle install,我都建议您重新启动服务器。您可能不需要,但在出现错误的第一个迹象时尝试此操作。
  3. 擦除您的数据库是否安全:当您处理nilClass或未定义的方法错误时,您可能在数据库中有旧数据 - 您可能有添加了一个列等等,旧记录没有,所以你的应用程序错误了。