加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Rails 3 – yield return或callback不会在视图

发布时间:2020-12-17 04:18:35 所属栏目:百科 来源:网络整理
导读:我正在将一个网站从Rails 2(最新)迁移到Rails 3(beta2). 使用 Ruby 1.9.1p378和 Ruby 1.9.2dev进行测试(2010-04-05 trunk 27225) 陷入困境,我不知道哪一部分会运作良好.怀疑产量是问题,但不确切知道. 在我的布局文件中,我经常使用以下技术: 应用程序/视图/
我正在将一个网站从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")

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读