2016-10-06 5 views
0

Я создаю альбом, который я планирую отображать с помощью масонства и ImgZoom, чтобы посетители могли иметь большее изображение, когда они нажимают на него.undefined method 'to_model' при компоновке миниатюр к исходному изображению

Согласно ImgZoom, чтобы сделать работу трансфокатора, что вам нужно сделать следующее:

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

Так что я сгенерировал загрузчиком, со следующими в нем:

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 

Все работает отлично , Я могу назвать обе версии без проблем, но когда я попытаюсь следовать инструкциям ImgZoom, сделав следующее:

<%= @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 %> 

Я получаю следующее сообщение об ошибке: undefined method 'to_model' for #<ImageUploader:0x0000000c35f4d8>

Я нашел аналогичный вопрос на переполнение стека, но спрашивающий не было ясно, и ему было предложено попросить другой вопрос на форуме , которого я не смог найти. Я могу индивидуально достигать 'p.image' и 'p.image.thumb.url', но я не могу сделать ссылку от одного к другому, что было бы прекрасно справиться с простым html.

Что я делаю неправильно?

Спасибо заранее

+1

вы пробовали '<% = link_to p.image.url делать%>' ....? –

+0

Это. Это было ЭТО просто. Черт возьми! Не могли бы вы сделать настоящий ответ, чтобы я мог принять его? Большое спасибо! – Jaeger

+0

вы можете принять ответ Саймона. Я рад помочь. –

ответ

1

Во-первых, создать класс «эскиз» в ссылке, вы должны объявить его правильно. Я отредактировал ссылку:

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

Во-вторых, вам нужно проверить, был ли создан подходящий маршрут для просмотра изображения. Это может быть сделано путем правильной привязки к статическим активам (поскольку ваш образ не находится под «общедоступным») или через представление шаблона.

Если файлы, хранящиеся под «общедоступными», ваш способ связи должен работать нормально.

Проверьте, как работает image_path в документации: image_path (and more)

+0

Здравствуйте, спасибо за ваш ответ, я уверен, что я достигли изображения, и их местоположение внутри «публичного», однако я пробовал ваш код, и я все равно получаю ту же ошибку (извините, что забыл класс миниатюр, я перепечатал код для вопроса) – Jaeger

+0

Вы ссылаетесь на p.image, что не приводит к правильному маршруту. Значение этого изображения не связано с представлением, поэтому возникает ошибка. Вы можете попробовать '<% = link_to image_tag (p.image.url) do%>' это сработает для вас? –

+0

Да, правильно было установить ссылку p.image.url вместо p.image – Jaeger