【问题标题】:What's the difference between <% code %> and <%= code %> in Rails erb?Rails erb 中的 <% code %> 和 <%= code %> 有什么区别?
【发布时间】:2011-03-19 10:03:47
【问题描述】:

两者之间似乎有区别,虽然我不能确切地说出来。

<% code %>

<%= code %>

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 erb


    【解决方案1】:

    &lt;% %&gt; 将评估包含的 ruby​​ 代码

    &lt;%= %&gt; 将评估并呈现包含的代码

    所以一个模板包含:

    Hello <% user.name %> how are you?
    

    ...将输出:

    Hello  how are you
    

    ...同时...

    Hello <%= user.name %> how are you?
    

    ...将输出:

    Hello fred how are you
    

    &lt;% %&gt; 常用于迭代器

    <ul>
      <% @users.each do |user| %>
        <li><%= user.name %></li>
      <% end %>
    </ul>
    

    【讨论】:

    • 终于找到了,我花了 10 秒才知道这是在做什么,但我花了 1 小时才找到这个答案。因为符号搜索。顺便说一句,你知道关于这个符号的 rails 官方文档在哪里吗?
    【解决方案2】:

    &lt;%%&gt; 只评估它们之间的 ruby​​ 代码,而 &lt;%=%&gt; 输出评估结果。不过不要混淆

    这会将“foo”输出到访问日志,并将nil 输出到浏览器输出

    <%= puts "foo" %>
    

    同时

    <%= "foo" %>
    

    将“foo”字符串输出到浏览器。

    【讨论】:

    • 您在第一条语句中错过了=&lt;% puts "foo" %&gt; 不会将nil 输出到浏览器。它将在服务器控制台中输出foo 并记录。 &lt;%= puts "foo" %&gt; 是你想要的。
    【解决方案3】:

    &lt;%= %&gt; 将代码语句的返回值打印到浏览器中,&lt;% %&gt; 只是执行代码。

    【讨论】:

      猜你喜欢
      • 2017-08-11
      • 2014-05-10
      • 2020-02-05
      • 2021-08-26
      • 2015-11-23
      • 2017-09-12
      • 2019-07-11
      • 1970-01-01
      相关资源
      最近更新 更多