Ruby on Rails: ошибка сервера при попытке загрузить файл с помощью attachment_fu: (невозможно преобразовать nil в Integer)

Я последовал простому примеру, чтобы загрузить файл (см. Ссылку на код ниже). Когда я добавляю в форму загрузки поле ‹% = f.file_field: uploaded_data%> и нажимаю кнопку отправки в форме (с прикрепленным файлом или без него), я получаю сообщение об ошибке на веб-странице: 500 Internal Server Error

В журнале сервера я получаю сообщение об ошибке: TypeError (невозможно преобразовать nil в Integer):

Я на рельсах 3.0.5, Ruby 1.9.2, Windows 7

Я использовал образец кода по адресу: http://clarkware.com/blog/2007/02/24/file-upload-fu

Ниже вы найдете распечатку журнала сервера:

Rendered mugshot/new.html.erb within layouts/application (10.0ms)
Completed 200 OK in 289ms (Views: 49.0ms | ActiveRecord: 0.0ms)
Error during failsafe response: ActionView::Template::Error
  c:/Ruby192/lib/ruby/gems/1.9.1/gems/activesupport-3.0.5/lib/active_support/whiny_nil.rb:48:in `method_missing'
  c:/Ruby192/lib/ruby/gems/1.9.1/gems/actionpack-3.0.5/lib/action_dispatch/http/parameters.rb:10:in `parameters'
  c:/Ruby192/lib/ruby/gems/1.9.1/gems/actionpack-3.0.5/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb:3:in `_c___uby____
lib_ruby_gems_______gems_actionpack_______lib_action_dispatch_middleware_templates_rescues_diagnostics_erb___637362275_26463528_704965928'

  c:/Ruby192/lib/ruby/gems/1.9.1/gems/actionpack-3.0.5/lib/action_view/template.rb:135:in `block in render'
  c:/Ruby192/lib/ruby/gems/1.9.1/gems/activesupport-3.0.5/lib/active_support/notifications.rb:54:in `instrument'
  c:/Ruby192/lib/ruby/gems/1.9.1/gems/actionpack-3.0.5/lib/action_view/template.rb:127:in `render'
  c:/Ruby192/lib/ruby/gems/1.9.1/gems/actionpack-3.0.5/lib/action_view/render/rendering.rb:59:in `block in _render_template'
  c:/Ruby192/lib/ruby/gems/1.9.1/gems/activesupport-3.0.5/lib/active_support/notifications.rb:52:in `block in instrument'
  c:/Ruby192/lib/ruby/gems/1.9.1/gems/activesupport-3.0.5/lib/active_support/notifications/instrumenter.rb:21:in `instrument'
  c:/Ruby192/lib/ruby/gems/1.9.1/gems/activesupport-3.0.5/lib/active_support/notifications.rb:52:in `instrument'
  c:/Ruby192/lib/ruby/gems/1.9.1/gems/actionpack-3.0.5/lib/action_view/render/rendering.rb:56:in `_render_template'
  c:/Ruby192/lib/ruby/gems/1.9.1/gems/actionpack-3.0.5/lib/action_view/render/rendering.rb:26:in `render'
  c:/Ruby192/lib/ruby/gems/1.9.1/gems/actionpack-3.0.5/lib/action_dispatch/middleware/show_exceptions.rb:88:in `rescue_action_locally'
  c:/Ruby192/lib/ruby/gems/1.9.1/gems/actionpack-3.0.5/lib/action_dispatch/middleware/show_exceptions.rb:68:in `render_exception'
  c:/Ruby192/lib/ruby/gems/1.9.1/gems/actionpack-3.0.5/lib/action_dispatch/middleware/show_exceptions.rb:59:in `call'
  c:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.0.5/lib/rails/rack/logger.rb:13:in `call'
  c:/Ruby192/lib/ruby/gems/1.9.1/gems/rack-1.2.2/lib/rack/runtime.rb:17:in `call'
  c:/Ruby192/lib/ruby/gems/1.9.1/gems/activesupport-3.0.5/lib/active_support/cache/strategy/local_cache.rb:72:in `call'
  c:/Ruby192/lib/ruby/gems/1.9.1/gems/rack-1.2.2/lib/rack/lock.rb:11:in `block in call'
  <internal:prelude>:10:in `synchronize'
  c:/Ruby192/lib/ruby/gems/1.9.1/gems/rack-1.2.2/lib/rack/lock.rb:11:in `call'
  c:/Ruby192/lib/ruby/gems/1.9.1/gems/actionpack-3.0.5/lib/action_dispatch/middleware/static.rb:30:in `call'
  c:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.0.5/lib/rails/application.rb:168:in `call'
  c:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.0.5/lib/rails/application.rb:77:in `method_missing'
  c:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.0.5/lib/rails/rack/log_tailer.rb:14:in `call'
  c:/Ruby192/lib/ruby/gems/1.9.1/gems/rack-1.2.2/lib/rack/content_length.rb:13:in `call'
  c:/Ruby192/lib/ruby/gems/1.9.1/gems/rack-1.2.2/lib/rack/handler/webrick.rb:52:in `service'
  c:/Ruby192/lib/ruby/1.9.1/webrick/httpserver.rb:111:in `service'
  c:/Ruby192/lib/ruby/1.9.1/webrick/httpserver.rb:70:in `run'
  c:/Ruby192/lib/ruby/1.9.1/webrick/server.rb:183:in `block in start_thread'

Запущен POST "/ mugshots" для 127.0.0.1 в 2011-03-16 23:12:29 -0700

TypeError (невозможно преобразовать nil в Integer):


person user663778    schedule 17.03.2011    source источник


Ответы (3)


Это руководство очень старое и, вероятно, не актуально для Rails 3.x. Я даже не уверен, что attachment_fu работает с текущей версией Rails.

Я рекомендую скрепку или carrierwave

Вы можете увидеть другие варианты здесь

person lebreeze    schedule 17.03.2011
comment
PaperClip у меня не работал. Мне не удалось установить Image Magick. - person user663778; 17.03.2011

В attachment_fu есть некоторые изменения, но он доступен в rails3. Тем не менее, если хотите, можете использовать скрепку. attachment_fu

person Bijendra    schedule 17.03.2011
comment
попробуйте с исх. кому: patshaughnessy.net/ 23 мая 2010 г. /. Могу ли я узнать, с какими проблемами вы столкнулись со скрепкой? - person Bijendra; 18.03.2011

Я тоже столкнулся с такой проблемой. Проблема заключается в геме или плагине attachment_fu. Просто удалите его и используйте любой другой плагин или драгоценный камень, который решит вашу проблему.

person Neeraj Kumar    schedule 02.08.2014