1

我正在关注 Ryan Bates 的carrierwave Railscast http://railscasts.com/episodes/253-carrierwave-file-uploads。有一次,在将图像调整为缩略图后,他使用以下代码显示缩略图

  <%=  image_tag painting.image_url(:thumb).to_s %>

我在 profilepic 实例变量上调用 url 方法并尝试像这样获取缩略图

 <%=  image_tag @profilepic.url(:thumb).to_s %>

但我得到了错误

wrong number of arguments (1 for 0)

它不期望 :thumb 参数。

在 image_uploader 中,我安排像这样创建缩略图(安装 rmagick 之后)

 version :thumb do
    process :resize_to_limit => [50, 50]
  end

谁能解释我可能做错了什么?我发现了一个关于Rails 主题的 SO 问题:image_tag issue,它解释了参数(在本例中为:thumb)需要传递给对象(而不是对象本身)的 url 方法。这就是我正在做的,但我得到了错误。

4

1 回答 1

4

首先,来自 Ryan 的代码有一个错字

<%=  image_tag painting.image_url(:thumb).to_s %>

正确的是

<%=  image_tag painting.image.url(:thumb).to_s %>

这已经发布在该 esp 的评论中。

对于您的代码,@profilepic 是来自模型或carrierwave 的 obj

例如 @profilepic = ProfilePic.find :first @profilepic.url 只是 ProfilePic 的一个方法

调用carrierwave控制文件的url的正确语法是@profilepic.image.url(:thumb)

希望这不会太混乱。

于 2013-04-26T04:37:02.890 回答