Rails:使用error_message_on进行Ajax表单验证

时间:2010-01-21 01:54:16

标签: ruby-on-rails ajax validation forms rjs

我一直试图在我的表单中获得一些ajax验证并且遇到了一些麻烦

我的表单中有这样的代码:

<% form_for @user, :html => { :id => 'user_form', :multipart => true } do |f| %>
    <%= f.label :username %><br />
    <%= f.text_field :username %> <%= error_message_on :user, :username %>
  </p>
  <p>
    <%= f.label :email %><br />
    <%= f.text_field :email %> <%= error_message_on :user, :email %>
  </p>
  #other form fields (password and confirmation)
  Type the words below to prove you aren't a robot: <%= recaptcha_tags %>
  <%= error_message_on :user, :base %>
  <p><%= f.submit "Submit" %></p>
<% end %>
<%= observe_form "user_form", :url => users_path %>

如果我不使用ajax,这会显示错误,但是我不确定如何使“error_message_on”部分出现并通过ajax消失,如果可能的话,通过onblur动作消失。

我的控制器工作正常,所以我不会在这里放置代码。

我想知道是否有人可以在这里填补空白:

在validate.js.rjs中:

#enables and disables the submit button on the bottom
if @user.valid?
  page[:user_submit].enable
else
  page[:user_submit].disable
end
page.select('.formError').each(&:remove)
#Some code to add the form error
#Some code to highlight the error field

只是为了让你直观地了解我正在尝试做什么,这是我的css:

.formError {
  color: #D00;
  font-size: 12px;
  font-weight: bold;
}

.fieldWithErrors input {
  border: 5px solid #f66;
}

1 个答案:

答案 0 :(得分:1)

我给你的第一条建议是放弃帮助并开始使用formtastic(http://github.com/justinfrench/formtastic)。我向你保证满意,或者退款。

在您喝完formtastic coolaid后,您的下一个停靠点应该是有效的(http://github.com/grimen/validatious-on-rails/)。它非常适用于formtastic(或任何表格构建者),并且应该帮助你避免重新发明轮子。

我希望这有帮助!