ruby-on-rails – 将Rails 3转换为Rails 2:带有块的助手
发布时间:2020-12-17 02:51:23 所属栏目:百科 来源:网络整理
导读:在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
在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%> tag,它只调用whatever.to_s.所以,在我的情况下,这导致尝试执行 (bicolor_table(services) do |service|).to_s 带来明显(坏)的后果.问题是:我原则上是错的(比如“帮助者不应该这样工作,而是使用……”)或者我应该寻找解决方法吗? 谢谢. 解决方法
这是完全可行的,事实上使某些类型的助手更加简单.您需要使用< %%>并实现这一目标.
def my_block_helper(param,&block) output = %(<div class="wrapper-markup">#{ capture(&block) }</div>) concat output end 在你的视图中使用它,如下所示: <% my_block_helper do %> <span>Some Content</span> <% end %> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |