best_in_place 不是 Rails 3.2.1 中的函数错误

Posted

技术标签:

【中文标题】best_in_place 不是 Rails 3.2.1 中的函数错误【英文标题】:best_in_place is not a function error in Rails 3.2.1 【发布时间】:2012-05-22 01:22:39 【问题描述】:

我正在为我的 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>

【问题讨论】:

stylesheet_link_tag best_inplace 缺少下划线 _place 不..它是正确的。这是我正在使用的样式表。 您需要向我们展示您的 application.js。这里的问题是,“为什么best_in_place 没有包含在我的页面中?” 【参考方案1】:

几分钟前我也遇到了这个问题,通过将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();
)

【讨论】:

没错,我之前也遇到过这种情况。【参考方案2】:

问题在于函数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() 的代码之前)。

【讨论】:

以上是关于best_in_place 不是 Rails 3.2.1 中的函数错误的主要内容,如果未能解决你的问题,请参考以下文章

ruby on rails + best_in_place + 数据表 + haml

Rails 4 - best_in_place:无法处理的实体

Rails 4 - best_in_place gem 和多对多关联

Rails - 带日期的 best_In_place gem

使用 Rails gem 'best_in_place' 进行内联编辑 - 错误:在 textarea 上编辑后新行丢失

在单击标签名称时 Rails best_in_place gem