Rails:“新”行动如何称为“创造”行动?

我正在按照本教程http://guides.rubyonrails.org/v3.2.13/getting_started.html在3.2.13版本中构建我的rails应用程序。 如果您转到6.9部分,您将找到用于创建新post的控制器和视图。 在这里,我不知道@post变量是如何new动作传递到create动作的,以及create函数调用的位置在哪里? 此外,我在处理edit和更新actions时遇到了同样的问题。 请指导我完成这个。

它不会传递给create动作,它会再次使用new动作显示的表单传递的参数进行实例化。

使用POST请求调用create action到config / routes.rb中指定的路径,从而导致特定的控制器和操作。

@post不是从new传递create params散列传递给create方法@post然后使用模型的new方法而不是控制器设置。 create调用new然后save并返回该对象。 new返回对象而不保存,然后save返回对象的有效性。 这就是为什么控制器中的create方法调用new然后有一个条件语句进行save 。 它基本上是说初始化这个对象然后如果它是一个有效的对象做一件事,如果它不做另一件事。 由于此检查,未调用create动作。

 #this will return true if valid or false if invalid Post.new(params[:post]).save #this will always return the Post object which conditionally is true in Ruby Post.create(params[:post]) #To use the create in a conditional statement it would be Post.create(params[:post]).valid? || Post.create(param[:post]).save 

最后一行是不必要的冗余,因此该示例使用new后跟save

模型的create方法更简洁,但在知道对象有效时最好使用。

希望这能让你更好地理解,但如果你仍然感到困惑,请告诉我,我会尝试进一步解释。