我正在尝试循环显示图像,如下图所示。
<%= @venue.venue_photos.each do |photo| %>
<div class="col-lg-3 col-md-6 col-sm-6">
<div class="widget">
<div class="thumbnail">
<%= link_to(image_tag(photo.display_photo.url(:medium)), photo.display_photo, :class => 'thumb-zoom lightbox') %>
</div>
</div>
</div>
<% end %>
在尝试从循环中检索来自carrierwave的图片网址时收到错误。
undefined method `model_name' for DisplayPhotoUploader:Class
答案 0 :(得分:0)
link_to helper使用传递给它的参数创建一个链接,即anchor element <a href="..">..</a>
。第一个参数用于显示可点击的文本/图像,第二个参数使用一组options
创建url
(即href
),<a> element
将链接到该html_options
最后一个<a> element
采用与photo.display_photo
相关的任何html属性。
在您的情况下,您正确传递了第一个和第三个参数但是第二个参数不正确url
不会创建任何display_photo
,因为它只会获取名为photo
的属性实例undefined method 'model_name' for DisplayPhotoUploader:Class
。这导致错误
url
要解决此问题,请在点击图片时传递您要路由的有效rake routes
。
在命令提示符下运行<%= link_to(image_tag(photo.display_photo.url(:medium)), photo.display_photo, :class => 'thumb-zoom lightbox') %>
#### ^^^^^^^^^^^^^^^^^^^
#### Change this
以检查应用程序的可用路由列表。
{{1}}