在Rails 5上使用回形针的未定义方法'has_attached_file'

时间:2018-03-17 10:07:20

标签: ruby-on-rails ruby-on-rails-5 paperclip

安装回形针后,Rails服务器无法启动。我在控制台中有此错误消息:

undefined method 'has_attached_file'.

在我的Gemfile中

gem "paperclip", :git => "http://github.com/thoughtbot/paperclip.git"

我在config / environments / development.rb

中尝试了这个
config.gem "paperclip"

,这在我的config / application.rb

Paperclip::Railtie.insert

我的计算机上安装了ImageMagik(我在Windows 10上)。任何线索?

安装回形针后,我在控制台中收到一条消息,说回形针现在与aws-sdk> = 2.0.0兼容。所以我也从github设置了最新的aws-sdk-ruby ......

编辑:在使用命令'which convert'

获取路径后也尝试了这个
Paperclip.options[:command_path] = "/c/Program Files/ImageMagick-7.0.7-Q16/convert"

3 个答案:

答案 0 :(得分:0)

我要改变的第一件事是使用版本号而不是直接从GitHub获取包。

Gemfile中的

更改

gem "paperclip", :git => "http://github.com/thoughtbot/paperclip.git"

gem "paperclip", "~> 6.0"

确保运行rails generate paperclip命令(例如:rails generate paperclip photo image),将所需的attachment字段添加到数据库模型架构中。

获得attachment字段后,您可以使用has_attached_file将回形针安装到该字段(例如:has_attached_file :image)。

不要忘记重启服务器。

PS:没有必要使用config.gem "paperclip"Paperclip::Railtie.insert,我无法在GitHub Paperclip文档中找到它们,所以我确定它们现在已经停止了用于pre Rails 4应用程序。

P.P.S:我强烈建议你双重启动到Unix操作系统(无论是Linux发行版还是macOS),或者使用Cloud9等在线IDE,而不是使用Windows。这只是个坏主意,在处理项目时,您希望复制到生产环境的最小细节。

答案 1 :(得分:0)

尝试添加

include Paperclip::Glue

到你的模特。

答案 2 :(得分:0)

我现在都准备好了。显然数据库构造存在问题。对于其余部分,github https://github.com/thoughtbot/paperclip上的所有内容都得到了很好的解释,但是1)我正在执行一个缺少几个步骤的教程,2)Windows存在一个特定的问题。

删除所有表并从头再次迁移似乎已经解决了导致错误的最基本问题。

Windows用户,请注意与ImageMagik无关的file.exe的路径设置。您可以将此file.exe放在任何您想要的位置,在我的情况下

Paperclip.options[:command_path] = 'C:\Sites\utils\GnuWin32\bin'

非常感谢!