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_tagbest_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 上编辑后新行丢失