2013-09-15 2 views
1

Я создаю базовое приложение Rails 4 и, похоже, попал в неприятную промашку. Я слежу за CarrierWave Railscast, и пока я могу получить изображения, отображаемые на /image/show.html.erb, у меня были некоторые трудности с получением любых изображений, которые я загрузил для отображения в галерея, с которой связано каждое изображение.Устранение неполадок изображений, загруженных CarrierWave

Странная вещь: никаких ошибок не зарегистрировано. Страница загружается без ошибок Rails, которые появляются на странице или на терминале; единственный способ, которым я знаю, что-то не так, заключается в том, что div, который должен отображаться, не появляется вообще.

Я действительно в тупике об этом. Если вы посмотрите, div .images в действии show для галерей отображает, но абсолютно ни один из подэлементов не создает вообще. Что я делаю не так?

Source code here

приложение/модели/image.rb

class Image < ActiveRecord::Base 
    belongs_to :gallery 
    mount_uploader :image, ImageUploader 
end 

приложение/модели/gallery.rb

class Gallery < ActiveRecord::Base 
    has_many :images 
end 

приложение/закачивающие/image_uploader.rb

class ImageUploader < CarrierWave::Uploader::Base 

    include CarrierWave::RMagick 

    storage :file 

    def store_dir 
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" 
    end 

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


end 

приложения/просмотров/фото/show.html.erb
Ниже, мы можем видеть, что изображения могут быть оказаны без проблем, так как это представление для их собственного соответствующего контроллера.

<p> 
    <strong>Title:</strong> 
    <%= @image.title %> 
</p> 

<p> 
    <strong>Description:</strong> 
    <%= @image.description %> 
</p> 

<p> 
    <strong>Image:</strong> 
    <%= image_tag @image.image_url.to_s %> 
</p> 

/apps/views/galleries/show.html.erb
Это где все становится сложнее. Во-первых, независимо от того, что я изменяю в пределах div, все, что внутри, кажется, кажется пустым. Я попытался несколько раз изменить бит «для изображения в галерее @ gallery.images», но безрезультатно.

<div id="images"> 
    <% for image in @gallery.images %> 
    <div class="image"> 
     <%= image_tag image.image_url(:thumb) %> 
     <%= image.description %> 
     <div class="name"><%= image.title %></div> 
     <div class="actions"> 
     <%= link_to "edit", edit_image_path(image) %> | 
     <%= link_to "remove", image, :confirm => 'Are you sure?', :method => :delete %> 
     </div> 
    </div> 
    <% end %> 
    <div class="clear"></div> 
</div> 

<p> 
    <%= link_to "Add a Painting", new_image_path(:gallery_id => @gallery) %> | 
    <%= link_to "Remove Gallery", @gallery, :confirm => 'Are you sure?', :method => :delete %> | 
    <%= link_to "View Galleries", galleries_path %> 
</p> 
+0

Действительно ли вы устанавливаете 'gallery_id' при создании изображения? – ramblex

+0

Да, спасибо, что указали на это. Я обновил свой вопрос, чтобы еще раз подумать об этом. :) –

+0

Можем ли мы увидеть ваш ImageUploader, пожалуйста? – Damien

ответ

1

Вам необходимо связать галерею и изображение. Один из вариантов - передать gallery_id новому действию, как вы делаете сейчас, установить его в контроллере на новом изображении, добавить скрытое поле для переноса его в действие create и включить белый список параметра.

Другой вариант заключается в гнездо изображения, маршруты в галерее маршруты, как так:

resources :galleries do 
    resources :images 
end 

Это создаст URL-адрес, такие как /galleries/123/images/234 и galleries/1233/images/new. Вы создаете ссылки на эту страницу, например, с помощью edit_galleries_image_path(@gallery, @image). Снова вам нужно будет установить правильный gallery_id в новом изображении, но затем должно должно быть form_for создать правильный путь к действию create, где у вас есть параметр gallery_id. Таким образом, rake routes должен войти в качестве удобного инструмента.

+0

Вложение изображений в галереях похоже на путь. Тем не менее, на данный момент я получаю 'undefined method 'images_path'', поэтому моя форма частично выглядит так, как будто она должна быть как-то изменена. С яркой стороны маршрутизация выглядит намного приятнее! –

Смежные вопросы