我在helpers / application_helper.rb文件中有测试方法:
def test
concat("Hello world")
end
然后,在index.html.erb中我称之为:
Blah
<% test %>
浏览器显示:
布拉赫 你好世界
通常情况下,但如果我改变
<%= test %>
浏览器显示:
Blah Hello worldBlah Hello world
它复制了所有页面。我不知道为什么? 他们之间有什么区别? 谢谢你的帮助!
答案 0 :(得分:13)
通常&lt; %%&gt;是一个Rails代码片段(即开始条件,结束条件等),而&lt;%=%&gt;实际上计算表达式并向页面返回一个值。
答案 1 :(得分:10)
从the Rails docs开始,concat
仅应在<% %>
代码块中使用。当你在<%= %>
代码块中使用它时,你会看到它两次,因为concat
将提供的文本附加到输出缓冲区,但是它也将整个输出缓冲区返回给你的帮助方法,这是然后由<%=
输出,导致整个页面重复。
通常情况下,你根本不需要使用concat
(我从来没有遇到过我需要的情况)。在你的助手中,你可以这样做:
def test
"Hello world"
end
然后在您的视图中使用<%= test %>
。
答案 2 :(得分:10)
有什么区别?
<% %>
让您评估视图中的rails代码
<%= %>
让您评估视图中的rails代码并在页面上打印出结果
示例#1: 等号类似于“put”所以:
<%= "Hello %>
...与:
相同<% puts "Hello" %>
示例#2:
<% if !user_signed_in? %>
<%= "This text shows up on the page" %>
<% end %>
#returns "This text shows up on the page" if the user is signed in
答案 3 :(得分:5)
就像这样
prod
和
integration
答案 4 :(得分:-1)
见:
<%= You need to do this %>
<% You shouldn't do this %>