为什么datepicker不会出现在Rails 3表单中

时间:2011-09-28 04:13:57

标签: jquery ruby-on-rails ruby-on-rails-3 debugging datepicker

我无法弄清楚为什么jQuery datepicker没有出现,即使我在我的应用程序上运行了jQuery。这是我做的:

我有一个包含

的Rails表单
  <div id="born_in">
   <%= f.text_field :born_in %><br />
   </div>

我在我的application.html.erb

的头部包含了jQuery,jQuery-UI,CSS
<%= stylesheet_link_tag "http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" %>

<%= javascript_include_tag "http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js",
    "http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js" %>     

我也有application.js,它表明我的选择器不是nil:

alert($("#born_in").length)  

返回1

我试过了:

$("#born_in").datepicker("show")

但它没有显示任何内容。 那么为什么我看不到datepicker()?这个版本的jquery-UI是否有针对datepicker的错误?如何测试我的应用程序中是否包含此功能?

谢谢。

3 个答案:

答案 0 :(得分:0)

它是否在手前初始化?如你所说,你打电话了

$("#born_in").datepicker();

在那段代码之前的某些地方?如果没有,你不需要“show”,只需运行没有参数的方法。

答案 1 :(得分:0)

Rails决定喜欢在id中添加控制器名称的表单输入。 例如,我的控制器名称为“Testjqueryui”,在_form部分中,生成了以下内容(与您的非常相似):

<%= f.text_field :date %>

生成的HTML(运行嵌入式ruby之后)的id为:“testjqueryui_date”。

所以,我的建议是检查生成的字段的id,因为它可能有前面的控制器名称。

我把它放在application.js文件中:

$(function() {
    $( "#testjqueryui_date" ).datepicker();
});

希望这有帮助!

答案 2 :(得分:-1)

您只需使用jQuery选择器查找要显示为datepickers的所有字段。一种方法是给datepicker字段一个特定的css类,如下所示:

<div id="born_in">
    <%= f.text_field :born_in, :class => "date" %>
</div>

然后,在您的application.js文件中(或您想要的位置),只需写下:

$(function() {
    $('input.date').datepicker();
});

您还可以使用特定元素的id而不是css类。你知道要求。 希望这很有用。