1

这是我的表格:

= 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并且表单中没有验证错误(我已经检查了来源)。

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

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

4

1 回答 1

5

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

  1. 不要重定向用户,而只是用于render显示带有错误消息的视图。例如,这就是 Devise 所做的。

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

于 2011-08-02T15:03:50.830 回答