best_in_place不是Rails 3.2.1中的函数错误

时间:2012-05-14 14:30:36

标签: jquery ruby-on-rails-3 rubygems inplace-editing best-in-place

我在我的Rails 3.2.1应用程序中使用best_in_place gem。我的开发没有错误。当我尝试在生产中运行应用程序时,我收到一个脚本错误

$(".best_in_place").best_in_place is not a function in my browser.

在我的视图页面中,我有以下代码

<%= stylesheet_link_tag "best_inplace", "jquery-ui-1.8.20.custom" %>
<%= javascript_include_tag "application", "jquery.dataTables.min" %>


<%= best_in_place @user, :description, :type => :textarea %>

<script>
  jQuery(".best_in_place").best_in_place();
</script>

2 个答案:

答案 0 :(得分:4)

我在几分钟之前也遇到过这个问题,通过将require best_in_place移到最后来解决,其他地方将无法正常工作。很奇怪,但无论如何都有效。

这是application.js清单

//= require jquery
//= require jquery_ujs
//= require jquery.purr
//= require_tree .
//= require i18n
//= require i18n/translations
//= require best_in_place

$(document).ready(function() {
  $('.best_in_place').best_in_place();
})

答案 1 :(得分:1)

问题是函数best_in_place()?是在best_in_pace.js内声明的,当application.js调用best_in_place()中的代码被执行时,可能仍需要加载它。正确的解决方案是通过asset pipeline启用js文件的连接。这可以通过包括

来完成
config.assets.debug = false

和/或删除

config.assets.debug = true

config/environments/development.rb中。 config/environments/production.rb。然后, 包含best_in_pace.js的地方无关紧要(只要它在jquery.js之后和调用best_in_place()的代码之前)。