simple_form不显示一个特定表单的验证错误

时间:2011-08-02 14:55:32

标签: ruby-on-rails ruby-on-rails-3 simple-form

这是我的表格:

= simple_form_for [@post, @comment] do |f| 
  = f.input :text, :label => false
  = f.button :submit

评论嵌套在帖子资源中。评论验证:validates :text, :length => { :minimum => 5 }

评论控制员:

def create
  @post = Post.find params[:game_id]
  comment = @post.comments.build :user_id => current_user, :text => params[:comment][:text]

  comment.save
  redirect_to @post
end

表单本身运行正常。如果我输入超过5个字符,则会创建注释。但是如果它更少,我只是被重定向到posts#show并且表单中没有验证错误(我已经检查了源代码)。

我也尝试填写设计注册表,如果失败,我可以看到错误。

我猜问题是由重定向引起的。但无论如何,我不知道如何解决它。

1 个答案:

答案 0 :(得分:5)

如果您重定向用户,则错误将丢失,除非您的应用程序以某种方式记住它们。有两种方法可以解决这个问题:

  1. 请勿重定向用户,只需使用render即可显示包含错误消息的视图。例如,这就是Devise所做的。

  2. 重定向用户,但以某种方式传输错误消息。有很多方法可以做到这一点,例如通过在flash中将它们保存为简单字符串或某种序列化形式。但这通常更复杂,只有在需要重定向时才应该这样做。