Rails 3不显示jQuery Date Picker

时间:2011-09-27 02:09:59

标签: jquery ruby-on-rails jquery-ui datetime formtastic

我跟着Railscast by RyanB将jQuery date_picker添加到表单中,并且现在卡住了几天。根据指示,只有三个变化:

  1. 将application.html.erb更改为包含jQuery和jQuery-ui(请参阅下面的application.html.erb)
  2. 将date_select字段更改为文本以容纳jQuery。我在_form.html.erb中进行了更改:

    <%= f.text_field:born_in%>

  3. 将以下语句添加到application.js:

    $(function() {
    $("#spec_born_in").datepicker();
      });
    
  4. 对我来说棘手的问题是我使用的是FullCalendar(JavaScript插件)。出于某种原因,如果我向applicaiton.js添加任何内容,FullCalendar将不会显示。因此,我需要将函数定义放在一个名为application_jquery_helper.js的文件中,并在加载FullCalendar的js文件后加载它。

    我已经完成了所有这些,但在我的表单中,文本字段只是一个文本字段,并且jQuery datepicker不会显示。

    我想知道我做错了什么阻止了jQuery datepicker出现。我能想到的唯一原因是我在application.html.erb中包含js文件的顺序,但我不知道如何修复它。

    以下是我在application.html.erb中的重要内容:

      <head>
    <%= csrf_meta_tag %>
    <%= render 'layouts/stylesheets'%>
    <%= javascript_include_tag :defaults %>
    <!-- <%=stylesheet_link_tag'blueprint/screen',:media=>'screen'%> 
    <%=stylesheet_link_tag'blueprint/print',:media=>'print'%> -->
    <%= stylesheet_link_tag 'formtastic', 'formtastic_changes', :cache => "base" %>
    
    <%= stylesheet_link_tag "http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/themes/redmond/jquery-ui.css", "application" %>
    <%= javascript_include_tag "http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js",
               "http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.1/jquery-ui.min.js", "application" %>
    
    <%= stylesheet_link_tag "fullcalendar.css" %>
    <%= stylesheet_link_tag "application.css" %>
    <%= javascript_include_tag "jquery.js" %>
    <%= javascript_include_tag "jquery.rest.js" %>
    <%= javascript_include_tag "rails.js" %>
    <%= javascript_include_tag "application.js" %>
       <!-- these are needed for the calendar. -->
     <%= javascript_include_tag "jquery-ui-1.8.11.custom.min.js" %>
     <%= javascript_include_tag "fullcalendar.js" %>
     <%= javascript_include_tag "calendar.js" %>
     <%= javascript_include_tag "application_jquery_helper.js" %>
    

    非常感谢您的评论或建议!

1 个答案:

答案 0 :(得分:0)

我相信当DOM没有完全加载时你正试图访问一个元素。

要纠正此问题:

$(document).ready(function(ev) {
  $("#spec_born_in").datepicker();
});

如果您需要“未来”支持,也可以查看jQuery's .live() functionality