我正在按照本教程http://guides.rubyonrails.org/v3.2.13/getting_started.html在3.2.13版本中构建我的rails应用程序。如果您转到6.9部分,您将找到用于创建新帖子的控制器和视图。在这里,我不了解@post
变量从new
操作传递到create
操作的方式以及调用create
函数的位置?此外,我在处理edit
和更新actions
时遇到了同样的问题。请指导我完成这个。
答案 0 :(得分:9)
它没有传递给create
动作,它再次使用从new
动作显示的表单传递的参数进行实例化。
create
操作到config / routes.rb中指定的路径,从而导致特定的控制器和操作。
答案 1 :(得分:1)
@post
未从new
传递到create
,params
哈希传递到创建方法@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
方法更简洁,但在您知道对象有效时可能最好使用。
希望这能让您更好地理解,但如果您仍然感到困惑,请告诉我,我会尝试进一步解释。