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()).

Другие вопросы по тегам