繁体   English   中英

辅助方法如何屈服于rails 3中的块?

[英]How does a helper method yield to a block in rails 3?

我已经将这个模式用于rails 2中的许多帮助程序,但它在rails 3中的工作方式不同。我的目标是让一个帮助器方法生成一些嵌套内容的html标记。 以下是我想要获得的基本示例:

<div class="box">
  my content
</div>

在rails 2中,我这样做:

在我的布局文件中,我调用了辅助方法:

  <% box_wrapper do %>
    <%= yield -%>
  <% end %>

辅助方法的定义如下:

def box_wrapper
  concat <<-EOF.html_safe
    <div class="box">
  EOF

  yield  if block_given?
  concat <<-EOF.html_safe
    </div>
  EOF
end

但是在rails 3中,当视图被渲染时,它会输出我的整个页面,然后在box_wrapper它会第二次呈现所有页面内容。

我想我错过了一些关于如何使用助手和收益的东西。 有任何想法吗?

在Rails 3中,您不再需要使用concat方法来构建块的内容。

您的助手现在看起来像这样:

def box_wrapper(&block)  
  content = capture(&block)  
  content_tag(:div, content, :class => 'box')  
end

您可以在Railscasts 208中看到其他示例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM