我想将图像从图像文件夹循环到照片库。我在没有数据库的轨道上使用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
答案 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.erb
为app/views/articles/index.html.erb
,则@images
中的index
方法应定义ArticlesController
。