Ruby on Rails 中的表单、过滤器与展示层抽象
1. 表单对象与过滤器对象概述
表单对象可视为一种通用抽象,用于表示应用程序中非简单的类表单界面。其主要目标是将用户输入转换为应用程序级别的对象,以便向下层(服务或领域对象)传播,并向用户提供有意义的反馈。这些职责特定于表示层抽象,但并非每个抽象都需要同时承担这两项职责。有时,我们只需对用户提供的数据做出反应,以生成所需的响应。
在 Web 开发中,除了表单和链接,我们还会构建数据表和列表。这些界面通常都具备过滤、排序和搜索控件,以方便用户处理大量同质数据。用户驱动的查询需要处理输入参数,并根据提供的值对基础数据集进行转换。
2. 过滤器的实现方式
2.1 控制器中的过滤
在 Ruby on Rails 应用程序中,最初可以采用纯 Rails 的方式解决过滤问题,即将转换逻辑直接放在控制器类中。以下是一个根据查询参数提供项目过滤视图的控制器示例:
class ProjectsController < ApplicationController
def index
projects = Project.all.order(sort_params)
if params[:type_filter].in?(%w[published draft])
projects.where!(
status: params[:type_filter]
)
end
if params[:time_filter] == "future"
超级会员免费看
订阅专栏 解锁全文
85

被折叠的 条评论
为什么被折叠?



