jquery验证插件没有在rails中显示错误消息

时间:2012-11-30 19:23:19

标签: jquery ruby-on-rails-3 jquery-plugins jquery-validate

我正试图在rails中使用Jquery客户端验证。

我的以下代码运行正常  http://jsfiddle.net/hr1383/5CFRB/1/

“正确显示错误消息”

现在我正在尝试做同样的事情。 由于我不确定在哪里放置相应的JS和CSS,所以我决定放入application.html.erb文件开始。

<html>
  <head>
    <title>Umvox</title>
      <%= stylesheet_link_tag    "application" %>
      <%= javascript_include_tag "application" %>
      <%= javascript_include_tag "jquery.validate" %>
      <%= javascript_include_tag "jquery.validate.min" %>
      <%= javascript_include_tag "jquery-1.7.2" %>
      <%=  javascript_include_tag  "http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"%>
       <%=  javascript_include_tag  "http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.min.js"%>
     <%= javascript_include_tag :defaults %>
     <%= csrf_meta_tags %>

      <script type="text/javascript">
         $(document).ready(function() {
       $("#company_form").validate({
            rules: {
                "company": {required:true}
             },
             messages:{
                company: "Enter Company name"
              }
           });
         });​
       </script>
      <style type="text/css">
        #company_form {background-color: aqua}
        #company_form label { width: 250px; }
        #company_form label.error, #company_form input.submit { margin-left: 253px; }
    </style>
 </head>
 <body>
   <%= render "shared/dashboard_button_login" %>
   <%= yield %>
 </body>
</html>

我的_form.html.erb包含

<%= form_tag("/locations/search" , :remote=> true, :id=>"company_form",        :name=>"company_form", :form_to_validate=>'location') do  %>
<table>
   <tr>
   <th>Company</th>
   <th>City</th>
   <th>Country</th>
   <th>ZipCode</th>
  </tr>
  <tr>
     <td><%= text_field_tag :company %></td>
     <td><%= text_field_tag :city %></td>
     <td><%= text_field_tag :country %></td>
     <td><%= text_field_tag :zipcode %></td>
      <td><%= submit_tag 'search'%></td>
  </tr>
</table>
   

以下表单转换为

中显示的html

http://jsfiddle.net/hr1383/5CFRB/1/

这似乎不起作用,并且始终在不显示错误消息的情况下进行服务器调用。

为什么会这样? 由于表单不属于某个模型对象所以我不知道这里放js?

更新:我将application.html.erb更改为仅包含两个所需文件:

<html>
  <head>
    <title>Umvox</title>
      <%= stylesheet_link_tag    "application" %>
      <%= javascript_include_tag "application" %>
      <%= javascript_include_tag "jquery.validate" %>
      <%= javascript_include_tag "jquery-1.7.2" %>
       <%= csrf_meta_tags %>

      <script type="text/javascript">
         $(document).ready(function() {
       $("#company_form").validate({
            rules: {
                "company": {required:true}
             },
             messages:{
                company: "Enter Company name"
              }
           });
         });​
       </script>
      <style type="text/css">
        #company_form {background-color: aqua}
        #company_form label { width: 250px; }
        #company_form label.error, #company_form input.submit { margin-left: 253px; }
    </style>
 </head>
 <body>
   <%= render "shared/dashboard_button_login" %>
   <%= yield %>
 </body>
</html>

由于 Harshit

2 个答案:

答案 0 :(得分:2)

Ehrm,我不是红宝石的专家,但似乎你包括:jquery.validate和jquery.validate.min,以及两个不同版本的jquery。那不是很好。但出于好奇,为什么不弹出你的jquery验证后jquery?

答案 1 :(得分:1)

我同意povilasp,您不必同时包含jquery.validate和jquery.validate.min文件。 它们之间的唯一区别是前者是调试版,而后者是压缩版。

除了之外,如果你的rails版本很新,你不必显式包含jquery,因为jquery总是rails使用的js库。 (对不起,我不记得确切的版本)