我有一段代码:
<% @public_address.each do |key| %>
<%= key["address"]["address"] %>
<% end %>
这会正确显示键,但此代码
<% @public_address.each do |key| %>
<% puts key["address"]["address"] %>
<% end %>
什么都不显示。是什么赋予了?这两者有什么区别?
答案 0 :(得分:1)
erb中使用<% %>
和<%= %>
在渲染模板时执行ruby代码。
Erb是rails中的默认模板引擎。
<% %>
将评估它包含的ruby代码,但是“默默地”。
这意味着不会在渲染页面上打印输出。
<%= %>
在另一端,评估它包含的ruby和
在呈现的页面上呈现结果。
What's the difference between <% code %> and <%= code %> in Rails erb?
Puts只是Ruby中的一种方法,用于在运行时打印字符串。它与erb模板无关。
答案 1 :(得分:0)
在您的第一段代码<%= key["address"]["address"] %>
中,<%= %>
是rails语法,用于评估内部代码并返回值。
在第二段代码<% puts key["address"]["address"] %>
中,使用<% %>
,它不会返回已评估的rails语句。此外,puts是一种方法,它将跟随它的任何内容输出到粗壮的对象。在命令行程序中,这意味着打印到终端屏幕,但在Web应用程序中,您不使用终端屏幕。您正在使用控制器和视图模板,因此如果要返回将在视图中显示的值,则必须使用评估性<%= %>
。