Rails 4 Paperclip图像无法上传/显示(仅missing.png)

时间:2014-07-24 11:35:05

标签: ruby-on-rails paperclip

首先,这些是我的环境版本: Rails:4.1.0 Ruby:2.1.1p76 回形针:4.1

我创建了一个脚手架(rails g scaffold Entry description:text),并进一步将Paperclip添加到当时现有的模型中(rails g paperclip entry image)。

之后我迁移了,到目前为止一切正常。 现在,当我上传图片时,它不会显示,而是“/images/original/missing.png”显示,并且没有我刚刚上传的图像记录。

这是我的模型(models / entry.rb):

class Entry < ActiveRecord::Base
  has_attached_file :image,
        :path => ":rails_root/public/images/:class/:attachement/:id/:basename.:extension",
        :url => "/images/:class/:attachement/:id/:basename.:extension"

end

我的观点(show.html.slim):

p#notice = notice

p
  strong Description:
  = @entry.description
  = image_tag @entry.image.url

= link_to 'Edit', edit_entry_path(@entry)
'|
= link_to 'Back', entries_path

我安装了ImageMagick,甚至在我的development.rb中设置了Paperclip.options。 我不知道我在这里缺少什么,它似乎没有上传任何图像,也没有丢弃任何错误信息。

2 个答案:

答案 0 :(得分:1)

经过一番研究和一些冷饮后,我找到了解决方案!

有必要明确允许某些格式上传或删除验证检查(我建议将其用于开发)。 这样做就像在模型中添加以下行一样简单(对我来说,entry.rb) (来源:https://stackoverflow.com/a/21898204/3686898

do_not_validate_attachment_file_type :image

另外,我在我的控制器中添加了另一个检查(与早期Rails版本中的attr_accessible相同):

  private
    # Use callbacks to share common setup or constraints between actions.
    def set_entry
      @entry = Entry.find(params[:id])
    end

    # Never trust parameters from the scary internet, only allow the white list through.
    def entry_params
      params.require(:entry).permit(:description, :image)
    end

好的,我希望这可以帮助别人:) (永远记住要查看服务器日志。它提供了黄金信息!)

答案 1 :(得分:0)

检查你的  :path =&gt; &#34;:RAILS_ROOT /公共/图片/:类/:attachement /:ID /:基本名:分机&#34;

确保追溯到图像的存储位置