在大多数我看到的例子验证形式,我注意到,在控制器,新方法只需有:与变量
@object = Object.new
在创建方法,你会看到类似这样的:
@object = Object.find(params[:object])
if @object.save
flash[:success] = "This object has been added."
redirect_to objects_path
else
render :action => 'new'
end
这工作得很好,但我碰上(很常见)的唯一的事情,就是当检验失败使用一些内置的辅助方法:
validates_presence_of:值
的“渲染:行动=>‘新’将被调用。因此,然后轨绕过控制器,并直接到新的行动,试图呈现的形式。
控制器的旁路杀死我,因为有时我用我在我的控制器定义的值装载值到表单中。
因为rails会绕过控制器,并且在加载“render:action =>'new'”时从未设置过值,所以我最终会得到nil值的错误。
我的问题:在验证一个表单中已经定义了控制器中定义的变量的表单时,什么是重定向表单的最佳方式(或通常的最佳实践)?我想避免那些无价值的错误,所以我想我刚开始时做错了。
啊哈!答案正在我的脸上。我之前使用过滤器来构建其他东西,而且我从来没有将它用于表单。谢谢! :) – Steve 2010-02-17 19:48:23