Erb 语法说明
erb
的特点是除了能用简洁直观的语法生成HTML文件,也能够嵌入 Ruby 代码。
标签
§ 1 执行 Ruby code 且在 HTML 中插入输出結果时使用<%= Ruby code... %>
;整个<%= %>
被取代为code执行的结果;
<b><%= "sarah" %></b>
<h1><%= @user.name %></h1>
<a href="<%= @link %>">click me</a>
<%= rand(3) %>
<%= rand(n) %>
随机生成 0 到 n-1 之间的随机数
<%= rand(3) %>
输出结果可能会是 0 、 1 或 2 。
§ 2 只执行 Ruby code 但不输出结果时使用:<% Ruby code... %>
- 循环
<% @users.each do |user| %>
....
<% end %>
- 条件判断
<% if @user.weight > 50 %>
...
<% else %>
...
<% end %>
- 任何不需要输出的情況
<% user = @users.first %>
<%= user.name %>
§ 3 使用注释时可以使用 #
符号<%# Comment... %>
§ 4 禁止自动转义使用<%% ... %>
;
简单说就是照原样输出内容。原因是HTML中输入
<
,>
...和保留字会让HTML误认为是标签(<h>,``<a>
...引起混乱),因此HTML会自动把这些符号转义为实体(类似于>
,<
的东东),这个语法可以强制不进行转义。
对比看下就明白了:
<%= "<b>haha</b>" %>
# <b>haha</b>
<%%= "<b>haha</b>" %>
# <b>haha</b>
有时会看到标签
<%-
or-%>
or<%=
or-%>
or
<%=-
or%>
,意思是忽略前面和后面的空格和换行符(-
号在前就忽略前面的,在后就忽略后面的,在两端就忽略前后的的空格和换行符), 使输出更紧凑;不过要设置trim mode
。参考:ruby-china讨论帖