加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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 %>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读