Fork me on GitHub

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会自动把这些符号转义为实体(类似于&gt;,&lt;的东东),这个语法可以强制不进行转义。

对比看下就明白了:

 <%= "<b>haha</b>" %> 
 # &lt;b&gt;haha&lt;/b&gt;
 <%%= "<b>haha</b>" %> 
 # <b>haha</b>

有时会看到标签<%-or-%> or <%=or-%> or
<%=-or%>,意思是忽略前面和后面的空格和换行符(-号在前就忽略前面的,在后就忽略后面的,在两端就忽略前后的的空格和换行符), 使输出更紧凑;不过要设置trim mode参考:ruby-china讨论帖

posted @   Cloudhan  阅读(587)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
点击右上角即可分享
微信分享提示