我正在构建一个基本的 Rails 4 应用程序,但似乎遇到了令人沮丧的问题。我一直在关注CarrierWave Railscast,虽然我能够让图像显示在 /image/show.html.erb 上,但我在让我上传的任何图像显示时遇到了一些困难每个图像关联的图库。
奇怪的是,没有记录任何错误。页面加载时页面或终端中没有出现任何 Rails 错误;我知道有问题的唯一方法是图像应该出现的 div 根本没有出现。
我真的很难过。如果你看,画廊的 show 动作中的 .images div 会呈现,但绝对没有任何子元素呈现。我究竟做错了什么?
应用程序/模型/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
apps/views/images/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>