nim*_*lla 12 ruby-on-rails ruby-on-rails-3
我已经在rails 2中使用了这个模式用于许多帮助程序,但它在rails 3中的工作方式不同.我的目标是让一个帮助器方法生成一些嵌套内容的html标记.以下是我想要获得的基本示例:
<div class="box">
my content
</div>
Run Code Online (Sandbox Code Playgroud)
在rails 2中,我这样做:
在我的布局文件中,我调用了辅助方法:
<% box_wrapper do %>
<%= yield -%>
<% end %>
Run Code Online (Sandbox Code Playgroud)
辅助方法的定义如下:
def box_wrapper
concat <<-EOF.html_safe
<div class="box">
EOF
yield if block_given?
concat <<-EOF.html_safe
</div>
EOF
end
Run Code Online (Sandbox Code Playgroud)
但是在rails 3中,当视图被渲染时,它输出我的整个页面,然后在box_wrapper其内部呈现第二次所有页面内容.
我想我错过了一些关于如何使用助手和收益的东西.有任何想法吗?
Dou*_*rer 31
在Rails 3中,您不再需要使用该concat方法来构建块的内容.
您的助手现在看起来像这样:
def box_wrapper(&block)
content = capture(&block)
content_tag(:div, content, :class => 'box')
end
Run Code Online (Sandbox Code Playgroud)
您可以在Railscasts 208中看到其他示例.
| 归档时间: |
|
| 查看次数: |
10732 次 |
| 最近记录: |