gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 06:56:40 28 4
gpt4 key购买 nike

我正在将网站从 Rails 2(最新)迁移到 Rails 3 (beta2)。
使用 Ruby 1.9.1p378Ruby 1.9.2dev (2010-04-05 trunk 27225) 进行测试p>

陷入困境,我不知道哪个部分会起作用。怀疑 yield 是问题所在,但不确切知道。

在我的布局文件中,我经常使用以下技术:

app/views/layouts/application.html.erb:

<%= yield(:sidebar) || render('shared/sidebar') %>

例如局部看起来像:

app/views/shared/_sidebar.html.erb:

<p>Default sidebar Content. Bla Bla</p>

现在是关键部分了!
在任何 View 中,我都想创建一个 content_for block (可选)。这可以包含下面的 HTML 等示例。如果设置了这个 block ,里面的 pice HTML 应该在 application.html.erb 中呈现。
如果不是,Rails 应该在右侧的 shared/_sidebar.html.erb 处呈现 Partial。

app/views/books/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')

端不会通过 rails 或 ruby​​ 进行处理。

感谢您的投入和时间!

最佳答案

来自 railscasts.com 的 Ryan Bates 在第 #227 - Upgrading to Rails 3 Part 3 集中展示content_for?() 的解决方案(视频播放时间为 2:45 分钟)

我认为,这就是我们应该使用它的方式:

content_for?(:sidebar) ? yield(:sidebar) : render("shared/sidebar")

关于ruby-on-rails - Rails 3 - yield return 或 callback 不会在 View 中调用 <%= yield( :sidebar) || render ('shared/sidebar' ) %>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2611278/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com