在我的routes.rb
我有resources :items
行。我有一个new.html.erb
文件正在使用form_for @item do ...
来构建表单。在我的项目控制器中,我定义了新的操作:
def new
@item = Item.new
end
我想知道这个新动作定义的重点是什么。提交表单时,我有一个处理它的创建操作。它只用于使用form_for吗?如果我把它留下怎么办?是否有任何铁路魔术可以假设这是我想要的?
答案 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框架,但非常灵活。