best_in_place не является ошибкой функции в Rails 3.2.1
Я использую гем best_in_place для своего приложения Rails 3.2.1. У меня нет ошибок в моем развитии. Когда я пытаюсь запустить приложение в производственной среде, я получаю сообщение об ошибке скрипта
$(".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 ответа
У меня тоже была эта проблема несколько минут назад, решенная перемещением 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();
})
Проблема в том, что функция best_in_place()?
объявлен внутри best_in_pace.js
, который все еще может быть загружен в то время как код в application.js
призвание best_in_place()
выполнен. Правильное решение - включить сцепление файлов 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()
).