微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ruby-on-rails – Rails 3 – yield return或callback不会在视图中调用<%= yield(:sidebar)||渲染('shared / sidebar')%>

我正在将一个网站从Rails 2(最新)迁移到Rails 3(beta2).
使用 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")

原文地址:https://www.jb51.cc/ruby/268399.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐