将 Rails 3 转换为 Rails 2:带有块的助手

2023-12-29

在 Rails 3 中,我使用以下助手来获得偶数-奇数颜色的表格:

def bicolor_table(collection, classes = [], &block)
  string = ""
  even = 0
  for item in collection
    string << content_tag(:tr, :class => (((even % 2 == 0) ? "even " : "odd ") + classes.join(" "))) do
        yield(item)
    end
    even = 1 - even
  end
  return string
end

我在我的观点中使用它,如下所示:

<%= bicolor_table(services) do |service| %>
    <td><%= image_tag service.area.small_image %></td>
    <td><%= link_to service.title, service %></td>
<% end %>

现在,我必须将应用程序迁移到 Rails 2。问题是 Rails 2 不使用 Erubis,因此当它找到 标记时,它只会调用whatever.to_s。所以,就我而言,这会导致尝试执行

(bicolor_table(services) do |service|).to_s

具有明显的(坏的)后果。问题是:我原则上错了(比如“助手不应该以这种方式工作,而是使用......”)还是我应该寻找解决方法?

Thanks.


这可能无法回答您的问题,但是有一种更简单的方法来实现偶数/奇数颜色表,使用cycle command

 @items = [1,2,3,4]
  <table>
  <% @items.each do |item| %>
    <tr class="<%= cycle("even", "odd") -%>">
      <td>item</td>
    </tr>
  <% end %>
  </table>

希望本文向您介绍一个很酷的 Rails 实用程序

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 Rails 3 转换为 Rails 2:带有块的助手 的相关文章

随机推荐