Rails - 我是否需要定义' new'控制器中的动作

时间:2016-01-27 22:01:11

标签: ruby-on-rails

在我的routes.rb我有resources :items行。我有一个new.html.erb文件正在使用form_for @item do ...来构建表单。在我的项目控制器中,我定义了新的操作:

def new
  @item = Item.new
end

我想知道这个新动作定义的重点是什么。提交表单时,我有一个处理它的创建操作。它只用于使用form_for吗?如果我把它留下怎么办?是否有任何铁路魔术可以假设这是我想要的?

2 个答案:

答案 0 :(得分:1)

new为form_for创建一个新对象。 form_for将知道提交create(而不是update)因为该对象未被持久化。并且' form_for'无论如何都需要一个对象(所有模型支持的表格也是如此)。

new还为您提供了为某些属性设置初始值的机会,如果您愿意的话。

所以,总而言之,这很有帮助。

答案 1 :(得分:1)

默认情况下, new 操作将处理 GET请求。 创建操作将处理 POST 请求。您可以使用rake routes命令查看Rails如何响应特定的请求方法。

new 操作将响应浏览器的GET html请求并分配一个空对象,因为用户尚未输入任何内容。不会显示验证错误。

create 操作要求用户已提交表单,并将触发验证/等。然后,如果发生错误,它将重新呈现具有验证错误的表单。否则,默认情况下会触发redirect_to

这只是默认设置。 Rails是一个Opinionated框架,但非常灵活。

相关问题