<%和<%=之间的差异

yas*_*sen 1 html ruby-on-rails erb

有人能告诉我erb中的<%= %><% %>标签有什么区别吗?在哪种情况下我应该使用哪一个?我可以使用哪些其他标签以及它们的含义是什么?

Nic*_*nto 6

如上所述

<% %>
Run Code Online (Sandbox Code Playgroud)

将内部的ruby代码并进行评估

<%= %>
Run Code Online (Sandbox Code Playgroud)

将内部的ruby代码进行评估并在屏幕上打印结果,这通常意味着将返回一个可打印的结果,可以在html中用作普通文本

这样做

<div class="<% 'myclass' %>">
Run Code Online (Sandbox Code Playgroud)

会导致

<div class="">
Run Code Online (Sandbox Code Playgroud)

并且<div class="<%= 'myclass' %>"> 会导致

<div class="myclass">
Run Code Online (Sandbox Code Playgroud)

你可以看到这个railscast进一步解释它 http://railscasts.com/episodes/100-5-view-tips

此外,你可能会在将来遇到这个,甚至忘记我写了这个,但无论如何它可能是有用的

在某些情况下,并非每行ruby代码都应该是<%%>的一行.例如 - 使用案例开关

这不起作用:

<% case my_var %>
<% when 10 %>
<% some ruby code %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

但这会

<% case my_var 
  when 10 %>
<% some ruby code %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

所以要小心