简单的Mongoid验证创建! - 如何显示错误消息

Hel*_*rld 5 ruby-on-rails mongodb mongoid ruby-on-rails-3

我正在使用带有mongoid 2的Rails 3并且有一个关于mongoid验证的简单问题.

if @forum.topics.create!(name: params[:topic][:name])
   # success, do something
else
  #should handle errors but doesn't
    render 'new'
end
Run Code Online (Sandbox Code Playgroud)

如果我使用.create!方法,它正确地在mongoid模型类上运行验证,但它没有到达else块来显示错误.相反,它返回一个rails错误页面说...

Mongoid :: Errors :: TopicsController中的验证#create

验证失败 - 名称不能为空.

这很好,但是如何在视图中显示它而不是获得丑陋的rails错误消息页面?

MrY*_*iji 5

试试这种方式:

new_topic = @forum.topics.new(name: params[:topic][:name])
if new_topic.save
   # success, do something
else
  render 'new', errors: new_topic.errors.full_messages
end
Run Code Online (Sandbox Code Playgroud)

用这种方式你将得到一个局部变量errors,它是一个格式如下:

new_topic.errors.full_messages # => ["\"Name\" can't be blank"]
Run Code Online (Sandbox Code Playgroud)