未定义的方法' to_model'将缩略图链接到原始图像时

时间:2016-10-06 14:08:06

标签: ruby-on-rails model carrierwave link-to

我正在制作一张我计划用Masonry和ImgZoom展示的相册,以便访问者在点击它时可以获得更大的图像。

根据ImgZoom,要使缩放工作,您需要执行以下操作:

<local ref> SP <local sha1> SP <remote ref> SP <remote sha1> LF

所以我生成了一个上传器,里面有以下内容:

<a href="path/to/real/image.png">
    <img src="path/to/image's/thumbnail.png class="thumbnail" />
</a>

一切都很完美,我可以毫无困难地调用这两个版本,但是当我尝试按照ImgZoom的说明执行以下操作时:

class ImageUploader < CarrierWave::Uploader::Base

  include CarrierWave::MiniMagick

  storage :file

  def store_dir
    'portfolio/photos'
  end

  version :thumb do
    process :resize_to_fit => [220, nil]
  end
end

或:

<%= @portfolio.photos.each do |p| %> 
#This is a nested form inside the portfolio form, so I need to do this to get my images

<%= link_to image_tag p.image.thumb.url, p.image %>

我收到以下错误:<%= link_to p.image do %> <%= image_tag p.image.thumb.url, :class => 'thumbnail' %> <% end %>

我在堆栈溢出时发现了一个类似的主题,但提问者并不清楚,并被邀请在论坛上提出另一个问题,我无法找到。 我可以单独触及&#39; p.image&#39;和&#39; p.image.thumb.url&#39;,但我无法建立从一个链接到另一个链接,这对于简单的html来说是完全可行的。

我做错了什么?

提前谢谢

1 个答案:

答案 0 :(得分:3)

首先,创建班级&#34;缩略图&#34;在链接中,您需要正确声明它。我编辑了链接:

<%= link_to p.image.url do %>
    <%= image_tag p.image.url, class: "thumbnail" %>
<% end %>

其次,您需要检查是否创建了适合查看图像的路径。这可以通过正确链接到静态资源(因为您的图像不在&#34;公共&#34;)或通过模板视图来完成。

如果文件存储在&#34; public&#34;下,您的链接方式应该可以正常工作。

查看image_path在文档中的工作原理:image_path (and more)