<%=和" puts"之间有什么区别?在rails中命令?

时间:2014-08-24 02:45:31

标签: ruby-on-rails

我有一段代码:

<% @public_address.each do |key| %>
    <%= key["address"]["address"] %>
<% end %>

这会正确显示键,但此代码

<% @public_address.each do |key| %>
    <% puts key["address"]["address"] %>
<% end %>

什么都不显示。是什么赋予了?这两者有什么区别?

2 个答案:

答案 0 :(得分:1)

erb中使用<% %><%= %>在渲染模板时执行ruby代码。

Erb是rails中的默认模板引擎。

&lt; %%&gt;之间的差异和&lt;%=%&gt;

  1. <% %>将评估它包含的ruby代码,但是“默默地”。 这意味着不会在渲染页面上打印输出。

  2. <%= %>在另一端,评估它包含的ruby和 在呈现的页面上呈现结果。

  3. 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应用程序中,您不使用终端屏幕。您正在使用控制器和视图模板,因此如果要返回将在视图中显示的值,则必须使用评估性<%= %>