如何在Rails帮助器中包装html中的内容

Mar*_*cus 9 ruby ruby-on-rails erb ruby-on-rails-3

我想在Rails 3帮助器中用HTML包装一些内容,以便在我的视图中我可以这样做:

<%= rounded_box do-%>
  <%= raw target.text %>
<% end -%>
Run Code Online (Sandbox Code Playgroud)

我有一个看起来像这样的帮助方法:

def rounded_box(&block)
  str = "<div class='rounded_box'><div class='rounded_box_content'><div class='rounded_box_top'></div>        
  str << yield
  str << "<div class='rounded_box_bottom'><div></div></div></div>"
  raw str
end
Run Code Online (Sandbox Code Playgroud)

我现在拥有它的方式现在返回正确包装在HTML字符串中的内容,但不是在舍入round_box块中的任何erb之前(例如,在这种情况下,target.text呈现两次,一次包装,一次不包含).

有一个更好的方法吗?为简单起见,我想避免使用content_tag,但如果这是我能做到的唯一/最佳方式.

Jak*_*mpl 18

调用capture块而不是yield:

def rounded_box(&block)
  str = "<div class='rounded_box'><div class='rounded_box_content'><div class='rounded_box_top'></div>"        
  str << capture(&block)
  str << "<div class='rounded_box_bottom'><div></div></div></div>"
  raw str
end
Run Code Online (Sandbox Code Playgroud)