как использовать carrierwave?Почему я получил "Called id for nil, который по ошибке будет 4" - PullRequest
0 голосов
/ 01 февраля 2012

Я использую carrierwave для загрузки файла ... но возникли некоторые проблемы.

моя форма такая:

<%= form_tag({:action => :submit}, :id=>"image_uploader", :multipart => true,  :remote => true) do %>
    <input style="file"...>
<% end %>

В частности, есть файл ввода. Я хочу загрузить аватар пользователя.

в avatar_upload.rb я написал эти две команды:

 process :resize_to_fit => [500, 500]
 version :thumb do
   process :resize_to_fill => [52, 52]
 end

в контроллере я установил:

  avatar = params[:avatar]
  item.avatar = avatar
  item.save

может сохранить файл в правильном месте, но не изменяет размер и не генерирует версию для большого пальца.

согласно https://github.com/jnicklas/carrierwave

Я думаю, может быть, я должен использовать это:

uploader = AvatarUploader.new
uploader.store!(avatar)

Я думаю, "магазин!" Метод может запустить процесс изменения размера.

но, похоже, требуется <% = form_for @user%>, потому что ему нужен идентификатор.

однако я просто хочу использовать form_tag, потому что я создаю нового пользователя, а не изменяю существующего ...

Как я могу это решить?

1 Ответ

1 голос
/ 01 февраля 2012

В вашей модели просто добавьте

mount_uploader :avatar, AvatarUploader

, вам не нужно ничего делать с изображением с контроллера.

Вам также необходимо @user = User.new в вашем действии new.

...