ruby-on-rails - 如果块是内联或多行给出的,则 Rails 输出不同
问题描述
我很难找出我做错了什么或如何达到相同的结果。我要做的是在rails视图中打印数组@attributes。
这不起作用:
<% @attributes.each do |element| %>
<%= puts element.to_s %>
<% end %>
但这是:
<%= @attributes.each { |element| puts element.to_s }%>
我还尝试将所有内容放在 <%= %> 的第一条语句中,但没有成功。这两种说法不完全一样吗?
另外,如果您能帮助我-您将如何遍历数组并在每个项目后插入新行?
提前致谢!亚历克斯
解决方案
puts
实际上并不输出到 ERB 缓冲区。它输出到 STDOUT 并返回 nil。如果你想遍历记录和输出,你可以这样做:
<% @attributes.each do |element| %>
<%= element.to_s %>
<% end %>
ERB 标签将<%= %>
表达式的返回值输出到缓冲区中。如果您想使用非打印 ERB 表达式执行此操作,则需要使用concat
:
<% @attributes.each { |element| concat element.to_s } %>
这两种说法不完全一样吗?
不,输出实际上与以下内容相同:
<% @attributes.each do |element| %>
<%= nil %>
<% end %>
和
<%= @attributes %>
推荐阅读
- unity3d - WebGL 构建和 VR/Oculus 构建在同一个项目中
- java - AWS Lambda 的 Chrome 二进制文件
- ffmpeg - 如何在软件中解码像素格式 AV_PIX_FMT_CUDA 的 AVFrame?
- javascript - *ngIf 创建一个无限循环并且永远不会解决
- google-app-engine - 仅允许安全 SSL 连接(Google App Engine 灵活)
- python - 读取 SocketServer 处理程序中的所有等待行
- julia - 在 Windows 10 上的 JuliaPro 中运行 Julia 文件的快捷方式(或如何将 Ctrl-Enter 设置为运行文件的快捷方式)?
- javascript - Express.js 路由:如何防止重新加载上一页?
- laravel - 为什么我不能将我的注册请求作为登录请求传递,而它们都继承自请求?
- javascript - 使用 AJAX 传递给 PHP Papa Parse 对象的错误