ruby-on-rails - Ruby on Rails 中 User.new 的解释? (来自 Michael Hartl 的教程)

标签 ruby-on-rails ruby

我到处搜索,试图找到关于它是如何工作的/它的目的是什么的解释,但我找不到任何有用的东西。 我正在做 Michael Hartl 的教程,我的问题主要是关于两个 Action :“新建”和“创建”。 新操作具有以下内容:

def new
  @user = User.new
end

在对应于“新建”操作的 View 中,有一个 form_for 帮助程序,用户可以在其中输入他们的属性并点击提交。正如预期的那样,form_for 帮助程序的开头如下所示: form_for(@user)

然而,这就是我被难住的地方......在创建操作中,有以下代码:

def create
  @user = User.new(user_params)  
  #user_params is a function we defined which simply returns the permitted params from the user.

在“新建”操作中 @user = User.new 的目的是什么? User.new 到底完成了什么?我假设实例变量@user 是传递给表单所必需的,但在那种情况下,为什么我们必须在'create' 中重新声明@user isntance 变量?在我们的“创建”操作中仅使用 @user = User.new(user_params) 是否足够? User.new 是否需要以某种方式使表单正常运行?

我主要只是想弄清楚@user = User.new 在我们的"new"操作及其相应的"new" View (带有表单)中完成了什么,以及为什么当我们有一个“创建”时它是必要的实际上创建对象的操作。非常感谢任何帮助。谢谢大家一直尽力解释。提前感谢任何回答此问题的人。

最佳答案

新建和创建是不同的 Action 。当您获得新路线时,将调用 New。当您发布到新路线时,将调用 Create。因此,您必须以新方式创建用户,以便他们在表单中可用。您必须使用 create 中的表单内容创建用户,以便将其保存到数据库中。

您不能假设对 new 的请求将转到与创建请求相同的 Rails 实例。在代理后面运行应用的多个实例是很常见的。

关于ruby-on-rails - Ruby on Rails 中 User.new 的解释? (来自 Michael Hartl 的教程),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33198766/

相关文章:

ruby-on-rails - Ruby 和 Ruby on Rails Windows 安装程序修改了哪些注册表值?

ruby-on-rails - 浮点乘法的 Ruby 奇怪问题

ruby-on-rails - RSpec: 未初始化常量 ActiveRecord (NameError)

jquery - Rails-Jquery : Updating a Database Field on a click event

mysql - 将 Rails 3 应用程序开发环境移至另一台机器

ruby-on-rails - Heroku ruby​​ on rails 资源部署问题

ruby-on-rails - 直接从 Rails 操作中使用 Rack 中间件

ruby - 使用 nginx 的乘客安装失败

javascript - 如何将 Rails 变量传递给 AngularJS 配置

ruby - 如何使用 Ruby 获取系统信息?