如何使用HAML保持DRY?

时间:2013-02-13 01:20:53

标签: ruby-on-rails ruby haml

我在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

我如何在语义上完成此操作?显然,我可以在我的代码片段中声明一个变量并在渲染之前分配它,但这似乎超级懒惰。有没有一个例子我可以看到它显示了片段以及它是如何呈现的?

2 个答案:

答案 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 }

它的语义很好,虽然有点冗长。