Ruby on Rails:provide 与 content_for

2024-04-23

我今天遇到了视图辅助函数“provide”。通过查看它的手册,我仍然对它与“content_for”有何不同感到困惑。

提供(名称,内容= nil,&块)

与 content_for 相同,但与流式传输一起使用时会直接刷新 回到布局。换句话说,如果你想连接几个 渲染给定模板时,多次访问相同的缓冲区,您应该 使用content_for,如果没有,使用provide告诉布局停止 寻找更多内容。

问题 1:这对我来说相当抽象——有人可以通过给出一个说明性的例子来充实它吗?

问题 2:使用资产管道,哪个性能更好,为什么?

Thanks!


首先,什么是流媒体?你为什么要使用它?

流式传输是自上而下(由外向内)呈现页面的替代方法。默认渲染行为是由内向外的。必须在控制器中启用流式传输:

class MyController
  def action
    render stream: true # Streaming enabled
  end
end

根据文档 http://api.rubyonrails.org/classes/ActionController/Streaming.html:

对于轻量级操作来说,流媒体可能被认为是过度杀伤力 喜欢新建或编辑。流媒体的真正好处在于昂贵 例如,对数据库进行大量查询的操作。

那么,如果您不使用流媒体,还有区别吗?

Yes.

区别在于模板可以定义多个内容块通过致电content_for多次。这样做将连接块并将其传递给布局:

# layout.html.erb
<div class="heading"><%= yield :surprise %></div>
<div class="body">
   <p><%= yield %></p>
   <p>But it's not very interesting...</p>
</div>

# template.html.erb
<%= content_for :surprise, "Hello" %>
I've got your content!
<%= content_for :surprise, ", World!" %>

# Generated HTML
<div class="heading">Hello, World!</div>
<div class="body">
   <p>I've got your content!</p>
   <p>But it's not very interesting...</p>
</div>

Since provide 不继续搜索提供的模板,仅传递给第一个的块provide调用将被发送到模板:

# layout.html.erb
<div class="heading"><%= yield :title %></div>

# template.html.erb
<%= provide :title, "Foo" %>
<%= provide :title, "bar" %>

# Generated HTML
<div class="heading">Foo</div>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ruby on Rails:provide 与 content_for 的相关文章

  • 如何在rails中定义自定义路径?

    我有一个用户模型 如果我做 def my action user User new end then I get undefined method users path for
  • Rails 3 中关联的标记装置已损坏

    升级到 Rails 3 后 引用其他标记的装置 用于关系 的装置将停止工作 夹具标签被解释为字符串 而不是查找具有该名称的实际夹具 Example Dog yml sparky name Sparky owner john Person y
  • Ruby—Open3.popen3 / 如何打印输出

    我有一个小红宝石脚本 它的作用是mysql导入方式 mysql u
  • 在 Ruby on Rails 中渲染部分集合正在乘以项目

    我想在 Ruby on Rails 的页面中显示项目列表 我使用部分 in my index html erb我有的文件 in list news html erb I have div class news div
  • 如何让 Rails 资产管道生成源地图?

    我想让 Rails 与编译后的 CoffeeScript 缩小的 JS 一起生成源映射 以便更好地记录错误 不过 网上似乎还没有关于如何执行此操作的全面文档 有人这样做过吗 我使用 Rails 3 2 和 Heroku Rails 支持缩小
  • 在 Ruby 中从一个数组减去另一个数组

    我有两个任务数组 创建和分配 我想从创建的任务数组中删除所有分配的任务 这是我的工作代码 但很混乱 assigned tasks user assigned tasks created tasks user created tasks Do
  • 单表继承发现问题

    我有以下3个rails类 它们都存储在一张表中 使用rails的单表继承 class Template lt ActiveRecord Base class ThingTemplate lt Template class StockThin
  • Rails 3 ActiveAdmin。如何为关联记录设置默认排序顺序?

    我有一个发货模型和一个发票模型 发票属于装运 所以我添加了一个默认的发货排序顺序 如下所示 config sort order file number desc 但现在我想为发票添加相同的排序顺序 发货表是具有 file number 列的
  • Rails 3 UJS 干客户端 + 服务器端表单验证

    使用 jQuery 进行表单验证就像向字段添加类名一样简单 使用 Rails 进行表单验证就像将条件放入控制器 和 或模型 中一样简单 我认为应该有一种方法可以编写一次验证并将它们应用到客户端和服务器端 我一直热衷于编写自己的 javasc
  • Rails 和 Mysql 的毫秒数

    使用 Rails Mysql 时存储时间 以毫秒为单位 的最佳方式是什么 我将使用小数和composed of 以便能够将该值作为Ruby 时间进行操作 有人有更好的主意吗 自从提出这个问题以来 已经过去了好几年了 这是更新的解决方案 ht
  • Ruby 元编程,RSpec 的“应该”如何工作?

    我正在阅读 RSpec 并试图弄清楚 RSpec 的 应该 是如何实现的 有人可以帮忙解释一下这个函数的元性质是如何工作的吗 代码位于此处 http github com dchelimsky rspec blob master lib s
  • 在模型中的方法中捕获异常时重定向

    我正在使用 Authlogic connect 连接各种服务提供商 user rb中有一个方法 def complete oauth transaction token token class new oauth token and sec
  • :confirm 在使用 Rails 3 和 jQuery UJS 时忽略 Rails 中的选项

    我的 Rails 应用程序中有一个项目表 每个项目都有一个删除链接 如下所示 但是 即使用户单击对话框上的 取消 也会发送删除请求 有想法该怎么解决这个吗 我正在使用 Rails 3 Beta 3 以及 jQuery 库和随附的 jQuer
  • Rails 资产 - 保留许可证注释

    如何防止 Uglifier 删除某些文件中的某些注释 我希望缩小和压缩代码 但我也希望许可注释保持不变 来自 uglifyJS 的文档 nc or no copyright 默认情况下 uglifyjs 将在生成的代码中保留初始评论标记 假
  • Rails:从视图内渲染视图(不是部分视图)

    我有一个对两者都有响应的控制器html and js The htmlview 渲染整个页面 包括页眉和页脚 而js仅替换 main 除了页眉和页脚之外 两种格式呈现相同的内容 我可以用三个文件获得这种效果 show html erb di
  • 使用 shoulda 重构 Rails 模型上的 rspec 测试

    了解后应该匹配器 https github com thoughtbot shoulda matchers通过回答关于属性可访问性测试的另一个 StackOverflow 问题 https stackoverflow com a 11849
  • Ruby 反向柯里化:这可能吗?

    关于 Ruby 1 9 x 中的柯里化 我一直在某些地方使用它 并且可以像基本上支持 proc 参数的默认参数一样进行翻译 p proc x y z x y z p curry 1 gt returns a lambda p curry 1
  • 在 Rails 上制作 ruby​​ 占用更少的内存

    我正在尝试运行 Ruby on Rails 项目 redmine http www redmine org 在 VPS 上 它可以工作 但需要相当多的内存 与 VPS 的其余部分相比 rails 应用程序的使用量非常少 我的服务器上也运行着
  • Rails-自定义删除前确认对话框的视图

    要删除 Rails 中的记录 我使用此代码 result of which I get dialog box like this But I wants this dialog box to look like this 有没有办法自定义确
  • 为什么 .each 在我的 Rails 视图中完成后会重复数组? [复制]

    这个问题在这里已经有答案了 在我的 Rails 视图页面中 我有以下循环 它应该循环遍历我的 tag list 数组并打印每个标签 由于某种原因 它在打印每个单独的标签后会重复该数组 例如 这个数组有两个元素 ruby python 每个方

随机推荐

  • 递归深度有限的旅行目录树

    我需要递归地处理目录树中的所有文件 但深度有限 这意味着例如在当前目录和前两个子目录级别中查找文件 但不再进一步查找 在这种情况下 我必须处理例如 subdir1 subdir2 file 但不是 subdir1 subdir2 subdi
  • Xunit 中的测试异常 ()

    我正在尝试对此方法编写 Xunit 测试 public async Task
  • 在 DLL 中,函数表的结构如何?

    我一直在研究不明确支持我的操作系统的设备库的实现 特别是 我有一个反汇编的 DLL 以及大量的支持源代码 现在 功能表 导出表是如何构造的 我的理解是 第一个结构 data部分是 RVA 表 接下来是通过索引链接到第一个地址表的字符串表 这
  • Linux 内核线程没有地址空间

    为什么Linux内核线程没有地址空间 对于任何要执行的任务 它都应该有一个内存区域 对吗 内核线程的文本和数据去了哪里 内核线程确实有一个地址空间 只是他们都有同一个 这并不妨碍它们各自拥有不同的堆栈 文本和数据放置在内核地址空间 由所有线
  • 当数据包含 UTF 8 字符时 PHP 导出 CSV

    在 MySQL 中 我将数据字段类型设置为utf8 bin我正在以 Unicode 存储数据 文本在网页中正确显示 我想生成 Excel 文件 将数据从我的表导出到其中 输出在 xls and cvs是 我在这里查看了其他答案 它被提到使用
  • 如何在Android中编写特殊字符

    我想将单位添加到我的TextView 例如幂 2 如文本行上方的小写字母 微符号 等 我怎样才能做到这一点 是的 您可以使用 Unicode 字符Textview TextView tvtext new TextView this tvTe
  • 下载NLTK数据时出现PermissionError

    我使用 Anaconda 的 Python 3 6 3 发行版 它安装了 NLTK 但没有安装我项目所需的 NLTK DATA 问题是 当我尝试安装时 nltk download I get PermissionError Errno 13
  • 如何拆分同时包含分隔符和转义分隔符的字符串?

    我的字符串分隔符是 分隔符在字符串中转义为 E g irb main 018 0 gt s a b d e gt a b d e irb main 019 0 gt s split gt a b d e 有人可以建议我正则表达式 这样 sp
  • jQuery $.live() 不适用于 iPhone 上的表格行

    我正在使用 jQuery 使表格行可点击 live 功能 可以在 Chrome Firefox 甚至桌面 Windows Safari 上完美运行 但不能在 iPhone 上运行 bind 到处都可以使用 但出于明显的原因 我想使用其他功能
  • 代码优先更改数据源,无需连接字符串

    我在创建 MVC4 应用程序时似乎遇到问题 我采用了代码优先方法来创建模型 但 web config 文件中似乎没有创建连接字符串 构建的数据库似乎是在 localhost SQLEXPRESS 实例上构建的 但我想将其更改为外部数据源 如
  • svg 中的简单填充图案:对角线阴影

    我如何填充 SVG 形状 不是使用单一颜色 图像或渐变 而是使用阴影图案 如果可能的话对角线 已经两个小时了 我什么也没发现 至少在2005年之后 我认为一个可能的破解方法是使用孵化的 PNG 作为填充 但这并不理想 我在互联网上也没有找到
  • 使用 Pandas/ExcelWriter 对单元格中的文本部分进行着色

    如何使用 pandas 数据框和 ExcelWriter 对写入 Excel 文件的部分文本进行着色 我已经设置了使用背景颜色和文本颜色以及不同内容来格式化单元格 但是您可以将格式设置仅应用于字符串 1 3 5 的单元格中的第一个逗号分隔值
  • 如何防止意外地在非常量对象上调用变异函数?

    假设我们有一个 myType 类型的对象 obj 并且我们希望将其传递给函数 Foo 该函数返回一些有关 obj 的有价值的信息 函数 Bar 是声明 obj 的地方 也是从中调用 Foo 的地方 如下所示 void Bar myType
  • Chrome 应用程序 localStorage 不持久并且 chrome.storage 不工作

    我有一个 chrome Kiosk 应用程序 我需要在机器打开和关闭之间保存数据 几个字节作为字符串 但无论我尝试什么 本地存储似乎在重新启动时都会被擦除 当我转到 chrome inspect apps 检查 Chrome 应用程序时 控
  • 合并并总结 Pandas 中的几个值计数系列

    我通常使用value counts 获取某个值出现的次数 然而 我现在处理大型数据库表 无法将其完全加载到 RAM 中 并在不到 1 个月的时间内查询数据 有没有办法存储结果value counts 并将其合并 添加到下一个结果中 我想统计
  • 数据表:根据隐藏列值隐藏行

    我在用dataTable在 jsp 中显示我的表的插件 我也想使用复选框选项 像这里的东西 数据表 根据列中的值过滤行 https stackoverflow com questions 29569492 datatables filter
  • 使用VB.NET上传文件到SFTP服务器

    我需要将文件上传到 SFTP 服务器 我正在使用 VB NET 2008 怎样才能上传一个简单的 csv使用端口号 用户名和密码等将文件从本地计算机传输到 SFTP 服务器 提前致谢 NET 常用的开源 SFTP 库是SSH NET htt
  • SFINAE 内部概念模板参数

    SFINAE 在概念论证中起作用吗 也许这里不叫SFINAE 例子 template
  • SwiftUI:类型不符合协议“UIViewRepresentable”//我的代码

    我正在开发一个新的 SwiftUI 应用程序 我正在尝试弄清楚如何使这个 Swift 项目与 SwiftUI 兼容 在此示例中 我正在开发带有方向的地图 问题是我无法使 UIViewRepresentable 工作 我收到错误 类型 Dir
  • Ruby on Rails:provide 与 content_for

    我今天遇到了视图辅助函数 provide 通过查看它的手册 我仍然对它与 content for 有何不同感到困惑 提供 名称 内容 nil 块 与 content for 相同 但与流式传输一起使用时会直接刷新 回到布局 换句话说 如果你