为form_for编写错误消息的条件

时间:2012-03-05 07:14:45

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1

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

<% 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 个答案:

答案 0 :(得分:2)

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

检查一下,您当前的方法肯定会在将来需要检查验证时遇到一些麻烦。

答案 1 :(得分:0)

试试这个

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