Я хочу создать общий контроллер, который можно вызывать после загрузки страницы (с помощью AJAX), и обновлять различные элементы на странице в зависимости от того, какой контроллер вызвал его.
Цель состоит в том, чтобы улучшить кэширование страниц и фрагментов при отображении пользовательских элементов для пользователей.
Моя структура выглядит следующим образом:
controllers/general_ajax_controller.rb
views/general_ajax/on_page_load.js.coffee
./_update_some_stuff.js.coffee
* on_page_load
action в контроллере обрабатывает логику выяснения, какие партиалы загружать, и представление будет отрисовывать партиалы.
В представлении on_page_load.js.coffee
у меня есть этот код (упрощенный):
<%= render "update_some_stuff" %>
, который должен отображать частичное.Вместо этого я получаю эту ошибку:
ActionView::Template::Error (SyntaxError: Reserved word "function" on line 2):
app/views/general_ajax/on_page_load.js.coffee:1:in `_app_views_general_ajax_on_page_load_js_coffee___2304196970850216490_70321203283120'
Я думаю, что coffeescript компилируется перед включением его в представление (которое является coffee и не поддерживает скомпилированный js)
Если я изменяю расширениеиз on_page_load
вида .js.erb
, затем работает .(Как ни странно, я должен перезапустить свой сервер, прежде чем он заработает, знаете ли вы, почему?)
Как вы думаете, это проблема в coffeescript или это плохая практика и поэтому не поддерживается?
В качестве дополнительного обсуждения, что вы думаете о моем подходе к динамическим скрипам?