我正在将一个网站从Rails 2(最新)迁移到Rails 3(beta2).
使用 Ruby 1.9.1p378和 Ruby 1.9.2dev进行测试(2010-04-05 trunk 27225)
使用 Ruby 1.9.1p378和 Ruby 1.9.2dev进行测试(2010-04-05 trunk 27225)
陷入困境,我不知道哪一部分会运作良好.怀疑产量是问题,但不确切知道.
在我的布局文件中,我经常使用以下技术:
应用程序/视图/布局/ application.html.erb:
<%= yield(:sidebar) || render('shared/sidebar') %>
例如,局部看起来像:
应用程序/视图/共享/ _sidebar.html.erb:
<p>Default sidebar Content. Bla Bla</p>
现在是关键部分的时候了!
在任何视图中,我想创建一个content_for块(可选).这可能包含一些HTML等示例.如果设置了此块,则应在application.html.erb中呈现内部的pice HTML.
如果没有,Rails应该在右侧的shared / _sidebar.html.erb上呈现Partial.
应用程序/视图/书籍/ index.html.erb:
<% content_for :sidebar do %> <strong>You have to read REWORK,a book from 37signals!</strong> <% end %>
所以你有了主意.希望.这种技术在任何Rails 2.x应用程序中都运行良好.
现在,在Rails 3(beta2)中,只有yield部分正在工作.
|| render('shared/sidebar')
或侧面不会通过铁轨或ruby处理.
感谢您的投入和时间!
解决方法
来自railscasts.com的Ryan Bates在Episode
#227 – Upgrading to Rails 3 Part 3中展示了一个带有content_for?()的解决方案(视频播放时间为2:45 Min)
我想,这就是我们应该使用它的方式:
content_for?(:sidebar) ? yield(:sidebar) : render("shared/sidebar")