我在Rails中安装了HAML。我正在尝试通过制作片段模板来扩展它的功能。例如,我有这种一般的图像结构:
- @images.each do |image|
.image
%a{ :href => image.target }
= image_tag image.url
%a{ :href => edit_image_path(image) }
Edit
或者至少是那种效果。我想做的是清理它,以便我可以说:
- @images.each do |image|
= render 'snippet/image' image
我如何在语义上完成此操作?显然,我可以在我的代码片段中声明一个变量并在渲染之前分配它,但这似乎超级懒惰。有没有一个例子我可以看到它显示了片段以及它是如何呈现的?
答案 0 :(得分:3)
render
可以选择:collection
选项,如下所示:
= render :partial => "image", :collection => @images
请参阅Layouts and Rendering in Rails指南中的3.4.5渲染集合,其中包含:
部分将为集合中的每个成员插入一次...部分[将]可以访问集合的成员...通过以部分命名的变量
答案 1 :(得分:2)
你可以这样做:
- @images.each do |image|
render :partial => 'snippet/image', :locals => { :image => image }
它的语义很好,虽然有点冗长。