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

时间:2013-09-25 13:51:07

标签: ruby-on-rails ruby ruby-on-rails-3 model-view-controller ruby-on-rails-3.2

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

2 个答案:

答案 0 :(得分:9)

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

使用POST请求调用

create操作到config / routes.rb中指定的路径,从而导致特定的控制器和操作。

答案 1 :(得分:1)

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

save

最后一行不必要地多余,因此该示例使用#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方法更简洁,但在您知道对象有效时可能最好使用。

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