我正在尝试为新的Rails项目组织我的javascript(咖啡脚本),并且保持全局js和页面特定的js分开。
对于特定于页面的js,我向主体添加了data属性。
在布局中
png
在我的应用程序助手中
Image
一切都很好。
在body[data-page="#{body_page_name}"]
下,我有module ApplicationHelper
def body_page_name
@body_page_name ||=[controller_name.camelcase.gsub('::',''),action_name.camelcase].join
end
end
文件
javascript/packs/admin
我的页面专用脚本位于admin.js
文件夹下
在Home.Index内部,包含我创建测试类的主页的特定js的文件
import './styles/app.scss';
// init global javascript
import './global/init';
// init page specific javascript
import './page_specific/home_index';
import './page_specific/init';
在Init.js文件中,我初始化每个页面特定的js
page_specific
我不明白为什么class App.HomeIndex
constructor: ->
console.log 'test'
是class Init
constructor: ->
page = "#{$('body').data('page')}"
@execute_page_js(page)
execute_page_js: (page) ->
console.log page
if 'function' is typeof window[page]
klass = window[page]
new klass()
$(document).on 'turbolinks:load', ->
new Init()
。 window[page]
是HomeIndex,我尝试使用控制台登录,没关系。