1

我在使用 Ruby on Rails 编写网站时遇到了这个问题。

bundle show
* jquery-ui-rails (4.0.1)

在 app/assets/javascripts/application.js

//= require jquery.ui.datepicker

在 app/assets/stylesheets/application.css

*= require jquery.ui.datepicker

在 app/views/layouts/application.html.erb

<%= stylesheet_link_tag    "application", :media => "all" %>
<%= javascript_include_tag "application" %>

然后在 somepage.html.erb 中,我得到了

<script type="text/javascript">
$(function(){
    $("#startdate").datepicker();
    $("#enddate").datepicker();
});
</script>

运行它时,Chrome 会说

Uncaught TypeError: Object [object Object] has no method 'datepicker'

我认为资源没有被正确引用是原因,因为可以通过将以下内容添加到 app/views/layouts/application.html.erb 来解决问题

<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.1/themes/base/jquery-ui.css" />
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://code.jquery.com/ui/1.10.1/jquery-ui.js"></script>
<link rel="stylesheet" href="/resources/demos/style.css" />

这些可以在http://jqueryui.com/datepicker/找到。我看到演示有没有这些代码的工作日期选择器。但我不明白为什么它在我的工作中不起作用。有人有什么建议吗?除了我上面提到的之外,还想添加什么吗?

4

1 回答 1

2

这可能是由于以下任一原因:

1)您在您的文件中包含多个 javascript 文件,application.html.erb这会导致完全破坏。

2)您正在使用其他一些 javascript 文件,这些文件也$像 jquery 一样使用。有两个相同的符号是获取no method 'datepicker'jquery 的可能原因。

另一种方法是将所有出现的 替换$jQuery

或者

只需将您的 jquery 代码包装在一个块中,如下所示:

jQuery(function($){
    //all jQuery code which uses $ should be here.
});
于 2013-03-04T09:49:40.620 回答