您正在使用 rails capture 帮助程序,但您的语法错误。不知道为什么会打印出来one
。在 rails 3.4 中它不会打印出任何东西。
这是使用它的正确方法
<% @number = capture do %>
three
<% end %>
this is some html and here is my <%= @number %>
将呈现的 html 是
this is some html and here is my three
由于您的语法错误,我不会担心为什么会出现“一个”。相反,我会更专注于正确使用捕获助手。
编辑:
您的第二个(已编辑)示例与您的第一个示例不同。这是行号和对最后一行的轻微更改,因此您可以看到发生了什么。
1. <% my_string = "" %>
2. <% my_string << capture do %>
3. Hello
4. <% end %>
5. before <%= my_string %> after
结果是Hello before Hello after
。所以第 3 行被渲染,然后第 5 行被渲染my_string
包含 value Hello
。
如果你把它改成这个
<% my_string = "" %>
<% my_string = capture do %> <!-- changed << to = -->
Hello
<% end %>
before <%= my_string %> after
那么结果就是before Hello after
。
那么,这意味着什么?当你使用<<
它时,它会搞砸capture
方法,它会渲染捕获块内的东西,即使通常你不希望它这样做。
基本上,你不能在这里做你想做的事情,至少不能用你当前的语法。