2012-03-05 65 views
2

我在写一些if/elsif语句来显示错误消息。当我将用户名留空并正确填写其他字段时,它仍会转到else语句并显示“所有字段必须完成”。有人能指出我的逻辑/语法错误吗?写入form_for错误消息的条件

<% if @user.errors.any? %> 
    <div id="error_explanation" class="round"> 

    <% if @user[:name].nil? and @user[:email].not.nil? and @user[:password].not.nil? and @user[:password_digest].not.nil? %>  
     <h2>Please enter a valid username. </h2> 


    <% else %>  <!--If any field is left blank --> 
     <h2>All fields must be completed. </h2> 

    <% end %> 
</div> 
<% end %> 

让我知道你是否需要别的东西。

回答

2

我认为railscasts有验证http://railscasts.com/episodes/211-validations-in-rails-3

检查出来大发作,你目前的做法是一定要在将来一些麻烦,你需要检查验证了很多。

+0

感谢您的链接! – Huy 2012-03-05 17:05:37

+0

我在user.rb中为我的用户创建了我的验证测试。我上面的代码只是为了让访问者在网站上显示错误消息。视频方法比我目前的方法更有效吗? – Huy 2012-03-05 19:46:19

+0

跟着视频,它的作品。再次感谢你,艾杰! – Huy 2012-03-05 19:58:45

0

试一下这个

<% if @user[:name].nil? and [email protected][:email].nil? and [email protected][:password].nil? and [email protected][:password_digest].nil? %> 
+0

我试过了,但它仍然显示else消息。 '<如果@user [:name] .nil? &&!@user [:email] .nil? &&!@user [:password] .nil? &&!@user [:password_digest] .nil? %>' – Huy 2012-03-05 07:55:21

+0

这是调试信息: 名称:“” 电子邮件:[email protected] 密码:foobar的 password_confirmation:foobar的 – Huy 2012-03-05 07:56:54

+0

您可以登录该领域的条件语句,并检查自己是否被设置为你正在考虑 – gt5050 2012-03-05 08:03:13