的支架产生像这样的新的动作:Rails中新控制器操作的目的是什么?
def new
@product = Product.new
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @product }
end
end
def create
@product = Product.new(params[:product])
respond_to do |format|
if @product.save
format.html { redirect_to(@product, :notice => 'Product was successfully created.') }
format.xml { render :xml => @product, :status => :created, :location => @product }
else
format.html { render :action => "new" }
format.xml { render :xml => @product.errors, :status => :unprocessable_entity }
end
end
end
和视图呈现的部分,命名form
。由于new
窗体呈现与创建新产品的动作集相同,因此@product
的目的是什么?我看到create
动作也会实例化一个新对象。它是否仅用于使您可以将表单绑定到对象,以便所有内容都从行为到正确行为?
是的,但我不明白这有什么好处。当'create'动作被调用时,它重新定义'@ product'。 – Geo 2011-03-09 17:04:22
我刚刚编辑了答案,所以我认为你可能没有看到它。 @产品的范围在动作(或请求)内。其状态不会保留在下一个请求中,即创建操作。 – 2011-03-09 17:05:52
是的,当行动结束时'@ product'消失是有道理的,但为什么要使用它呢?为什么不使用与模型无关的表单?对我来说,这似乎只是对内存的浪费。我相信这一定有一个潜在的目的,但我还没有看到它。 – Geo 2011-03-09 17:10:39