首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果模板包含方法定义,则输出重复

如果模板包含方法定义,则输出重复
EN

Stack Overflow用户
提问于 2009-09-15 04:13:30
回答 1查看 1.2K关注 0票数 0

我希望看到"test“一次出现在输出中,而"hello”则出现一次。

但我对这样一个事实感到困惑:如果我这样做, "test“一词将显示两次

代码语言:javascript
复制
<div>
  <h3>test</h3>
</div>

<% def helo %>
 <% "hello" %>
<% end %>

<%= helo %>

我想有一个简单的解释,这与一些怪癖的erb?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-09-15 04:41:03

我试过:

代码语言:javascript
复制
require 'erb'

template = %q{
    <div>
      <h3>test</h3>
    </div>

    <% def helo %>
      <% "hello" %>
    <% end %>

    <%= helo %>
}

t = ERB.new(template)
puts t.result

#(erb):6:in `helo': undefined local variable or method `_erbout' for main:Object (NameError) from (erb):10

因此,你提到的似乎是正确的,但在所有的方法中,你都可以很容易地欺骗它:

代码语言:javascript
复制
require 'erb'

template = %q{
    <div>
      <h3>test</h3>
    </div>

    <% def helo
      "hello"
    end %>

    <%= helo %>
}

message = ERB.new(template)
puts message.result

对我来说很管用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1425090

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档