ruby-on-rails - 如何在不渲染的情况下从 ERB 代码块中产生?

标签 ruby-on-rails ruby erb

考虑以下几点:

view.html.erb:

<%= make_backwards do %>
  stressed
<% end %>

helper.rb:

def make_backwards
  yield.reverse
end

View 呈现 stresseddesserts 而不仅仅是 desserts。如何在不渲染代码块的情况下使用 yield 中的内容?

最佳答案

ERB 有一个内部缓冲区,这使得 block 的使用有点复杂,正如您在代码示例中看到的那样。

Rails 提供了一个 capture方法,它允许您在此缓冲区中捕获字符串并从 block 中返回它。

因此您的助手将变成以下内容:

def make_backwards
  capture do
    yield.reverse
  end
end

关于ruby-on-rails - 如何在不渲染的情况下从 ERB 代码块中产生?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20629159/

相关文章:

ruby-on-rails - 我的/etc/sysctl.conf 文件在哪里? Postgresql Fatal 无法创建共享内存段

ruby-on-rails - 如何从周数中获取日期?

ruby - 为什么我的 rust 程序比 ruby​​ 程序慢?

mysql - 从控制台删除记录——Ruby on Rails

ruby-on-rails - 链接到同一行前面的图标

jquery - 在 AJAX 调用 Rails 应用程序后使用 js.erb 渲染页面后,HTML 类不响应 jQuery 操作

ruby-on-rails - 如何从字符串中获取模型类?

mysql - 防止 Rails 父关系中的竞争条件

ruby-on-rails - unicorn 重启错误

html - 在 Ruby on Rails html.erb 文件中循环