将Rails 3转换为Rails 2:使用块的帮助程序
在Rails 3中,我使用以下帮助程序来获得奇偶色表:
def bicolor_table(collection, classes = [], &block) string = "" even = 0 for item in collection string < (((even % 2 == 0) ? "even " : "odd ") + classes.join(" "))) do yield(item) end even = 1 - even end return string end
我在我的观点中使用它:
现在,我必须将应用程序迁移到Rails 2.问题是Rails 2不使用Erubis,因此当它找到标记时,它只调用whatever.to_s。 所以,在我的情况下,这导致尝试执行
(bicolor_table(services) do |service|).to_s
带来明显(坏)的后果。 问题是:我原则上是错的(比如“帮助者不应该这样工作,而是使用……”)或者我应该找一个解决方法吗?
谢谢。
这是完全可行的,事实上使某些类型的助手更加简单。 您需要使用<% %>
和concat
来实现此目的。
def my_block_helper(param, &block) output = %(#{ capture(&block) }) concat output end
在你的视图中使用它,如下所示:
<% my_block_helper do %> Some Content <% end %>
这可能无法解答您的问题,但使用cycle
命令可以更简单地实现偶数/奇数颜色表
@items = [1,2,3,4] <% @items.each do |item| %> "> item <% end %>
希望这能为您介绍一个很酷的Rails实用程序