首先,这些是我的环境版本: 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。 我不知道我在这里缺少什么,它似乎没有上传任何图像,也没有丢弃任何错误信息。
答案 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;
确保追溯到图像的存储位置