Rails 3中的表单验证错误

时间:2010-12-03 09:44:59

标签: validation ruby-on-rails-3 formtastic refinerycms

我有一个我在Rails 3中使用Formtastic构建的表单。表单提交到ClientsController的#create操作,如果保存成功,控制器将重定向到“谢谢”页面。如果保存不成功,则会重定向到嵌入表单的页面。我希望能够在表单页面上内联显示验证错误,但在重定向回到该页面后,errors对象将返回空白。

我该怎么办?我可以在表单上显示验证错误?

以下是控制器的代码。

if client.save && event.save
  redirect_to "/thank-you"
else
  redirect_to :back
end  

其他一些细节:我使用的是RefineryCMS,因此没有关于表单所在页面的视图,因此我无法render该视图。

2 个答案:

答案 0 :(得分:1)

为什么不:

render :action => 'name-of-the-view-the-form-is-in'

而不是redirect_to :back

答案 1 :(得分:1)

您需要将错误保存到会话中。


if client.save && event.save
  session[:client_create_errors] = nil
  redirect_to "/thank-you"
else
  session[:client_create_errors] = client.errors
  redirect_to :back
end

现在您可以使用session[:client_create_errors]

从任何地方访问错误对象