21 视图和模板之使用ERB模板引擎
在上一章中,我们了解了视图层的基本概念,以及在 Ruby on Rails 中视图如何与控制器和模型交互。这一章将重点讨论使用 ERB 模板引擎来创建动态视图。ERB(Embedded Ruby)允许我们在 HTML 中嵌入 Ruby 代码,从而生成动态的内容。
什么是 ERB?
ERB 是 Ruby 提供的一种模板系统,它允许你在 .html.erb
文件中将 Ruby 代码嵌入到 HTML 中。当 Rails 处理请求时,会渲染这些 ERB 文件并生成最终的 HTML 代码。ERB 主要有两个标签:
<% %>
:用来执行 Ruby 代码,但不将结果输出到模板中。<%= %>
:用来执行 Ruby 代码,并将结果输出到模板中。
使用 ERB 模板的例子
让我们来看看一个具体的例子,假设我们有一个名为 PostsController
的控制器,它负责显示博客文章。
步骤 1:生成控制器和视图
首先,使用 Rails 命令生成一个 PostsController
和相关的视图。
1 | rails generate controller Posts index show |
这将生成 PostsController
和两个视图文件:index.html.erb
和 show.html.erb
。
步骤 2:定义控制器动作
接下来,我们在 PostsController
中定义 index
和 show
动作:
1 | class PostsController < ApplicationController |
步骤 3:创建 ERB 视图
index.html.erb
在 app/views/posts/index.html.erb
文件中,我们将使用 ERB 来显示所有帖子的信息:
1 | <h1>博客文章列表</h1> |
在这个示例中,我们使用 <% %>
来遍历每个帖子,并使用 <%= %>
输出帖子标题和生成链接。
show.html.erb
在 app/views/posts/show.html.erb
文件中,我们展示单个帖子的详细信息:
1 | <h1><%= @post.title %></h1> |
这里,我们也使用了 ERB 标签来显示帖子的标题和内容。
ERB 标签的更多用法
除了基本的输出,ERB 还支持条件语句和循环等更复杂的逻辑。
条件语句示例
我们可以使用条件语句来根据帖子的状态显示不同的信息。例如,在 show.html.erb
中添加一个条件:
1 | <% if @post.published? %> |
迭代和块
ERB 还可以用于生成表格或其他结构。例如,我们可以在 index.html.erb
中用表格显示帖子列表:
1 | <table> |
在这个示例中,我们使用了 ERB 来生成一张表,其中每一行都是一个帖子的信息,展示标题和创建时间。
结论
这一章我们深入探讨了如何使用 ERB 模板引擎来创建动态视图。通过结合 Ruby 代码和 HTML,我们能够生成灵活且动态的内容。ERB 的标签使我们能够在视图中写入逻辑,使得渲染的 HTML 更加个性化和丰富。
在下一章中,我们将学习部分视图和布局,以进一步提高视图的复用性和结构化设计。通过正确利用部分视图和布局,我们可以让 Rails 应用更加简洁和高效。
21 视图和模板之使用ERB模板引擎