Ruby 面试题
目录

Ruby on Rails 中如何进行表单处理?

· 约 3 分钟读完 · 第 155 / 199 章

推荐答案

在 Ruby on Rails 中,表单处理通常通过 form_with 或 form_for 辅助方法来创建表单,并通过控制器中的 params 对象来处理表单提交的数据。以下是一个简单的示例:

本题详细解读

1. 表单创建

在 Rails 中,表单通常使用 form_with 或 form_for 辅助方法来创建。form_with 是 Rails 5.1 引入的,推荐使用它来代替 form_for 和 form_tag。

  • form_with 可以接受一个模型对象作为参数,自动生成对应的表单字段。
  • form_with 默认使用 AJAX 提交表单,可以通过 local: true 选项来禁用 AJAX。

2. 表单提交

表单提交后,数据会通过 HTTP POST 请求发送到服务器。Rails 会自动将表单数据封装在 params 对象中。

  • params 是一个 Hash 对象,包含了所有提交的数据。
  • 使用 params.require(:model_name).permit(:attribute1, :attribute2) 来提取并过滤允许的参数。

3. 控制器处理

在控制器中,通常会定义一个 new 动作来渲染表单,以及一个 create 动作来处理表单提交。

  • new 动作中,通常会初始化一个新的模型对象,用于表单的默认值。
  • create 动作中,使用 params 中的数据创建或更新模型对象,并根据操作结果进行重定向或重新渲染表单。

4. 模型验证

在 create 动作中,通常会调用 save 方法来保存模型对象。如果模型验证失败,save 会返回 false,此时可以重新渲染表单并显示错误信息。

5. 安全性

Rails 提供了强大的安全性机制,如 CSRF 保护、参数过滤等。通过 params.require 和 permit 方法,可以确保只有允许的参数被传递给模型,从而防止恶意数据注入。

通过以上步骤,Rails 提供了一种简洁而强大的方式来处理表单数据,使得开发者可以专注于业务逻辑的实现。