3

我第一次在这里发帖!

我有一个表格,有很多字段,除非发生任何验证错误,否则它工作得很好......

如果引发“validates_presence_of”,则会打开“ActiveRecord::RecordInvalid in ...”页面并离开我的表单...

我怎样才能在同一页面/表单上显示错误(一如既往)?

一切顺利!

我的控制器

    if check_cadastro == "Válido para cadastro"

       code....

      if @usuario.save!
        session[:usuario_id] = @usuario.id
        cookies[:token] = @usuario.token
        render :action => "edit"
      else
        render "new"  
      end  
   end

我的观点

<%= simple_form_for @usuario do |f| %>
    <%= f.error_notification %>
    <div ><%= f.input :cnpj, input_html: { class: 'txt' } , :label => false %></div>
    <div ><%= f.input :razaosocial, input_html: { class: 'txt' } , :label => false %></div>
<% end %>  
4

2 回答 2

2

改变

save!

这会引发错误,以:

save

它返回 false 或 true,并正确验证了对象,因此您可以通过以下方式访问错误:

@user.errors
于 2013-05-22T00:29:40.690 回答
2

您应该调用save而不是save!因此 if 语句可能会失败,您的对象将在其错误对象中包含消息,并且simple_form可以将它们呈现在之后的每个表单输入旁边render :new

于 2013-05-22T02:59:49.467 回答