将图像从文件夹循环到照片库

时间:2016-12-25 15:50:39

标签: ruby-on-rails ruby loops

我想将图像从图像文件夹循环到照片库。我在没有数据库的轨道上使用ruby。我还在学习使用ruby on rails,所以到目前为止,我的代码看起来像这样,我得到了错误。

静态网页html.erb

<div class="container">
 <div class="galleria">
   <% @images.each do |image| %>
   <%= image_tag image.gsub("app/assets/images/", "")  %>
   <% end %>
 </div>
</div>

静态页面

def image
  @images = Dir.glob("app/assets/images/galleria/*.jpg")
end

3 个答案:

答案 0 :(得分:2)

<强> 解决

这段代码对我有用

<% Dir.glob('app/assets/images/galleria/*').map do |path| %>
<%= image_tag "galleria/#{ File.basename(path) }" %>
<% end.reduce(&:+) %>

答案 1 :(得分:1)

您可以执行类似

的操作
<% Dir.glob('app/assets/images/galleria/*').map do |path| %>
  <%= image_tag "galleria/#{ File.basename(path) }" %>
<% end.reduce(&:+) %>

答案 2 :(得分:1)

在视图中不应该有太多的逻辑或ruby代码:它应该被移动到帮助者,控制器或模型。

您的html.erb可能如下所示:

<div class="container">
 <div class="galleria">
   <% @images.each do |image| %>
     <%= image_tag image  %>
   <% end %>
 </div>
</div>

您需要在相应的控制器中初始化@images。这一步可能没有完成,因此@images为零,您发现undefined method 'each' for nil:NilClass错误。

在您的控制器中:

@images = Dir.chdir(Rails.root.join('app/assets/images')) do
  Dir.glob("galleria/*.jpg")
end

这需要以正确的行动写出来。如果您的html.erbapp/views/articles/index.html.erb,则@images中的index方法应定义ArticlesController