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
方法更简洁,但在知道对象有效时最好使用。
希望这能让你更好地理解,但如果你仍然感到困惑,请告诉我,我会尝试进一步解释。