如何使用carrierwave?为什么我得到“被称为id为nil,这将错误地为4”

时间:2012-02-01 16:50:07

标签: ruby-on-rails ruby-on-rails-3 carrierwave

我正在使用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)

我猜“商店!”方法可以运行调整大小过程。

但似乎需要&lt;%= form_for @user%&gt;因为它需要一个ID。

然而,我只想使用form_tag,因为我正在创建一个新用户,而不是修改现有用户......

我该如何解决?

1 个答案:

答案 0 :(得分:1)

在您的模型中添加

mount_uploader :avatar, AvatarUploader

您不需要对控制器中的图像执行任何操作。

您的@user = User.new行动中还需要new