Rails ngix+passenger+rails 在 production 下 jquery 不起作用

elico_yqf · 2013年01月05日 · 最后由 elico_yqf 回复于 2013年01月07日 · 3442 次阅读

而在 dev 模式下通过 rails s 进行测试的时候 jquery 是可以起作用的,但是只要通过 assets 进行 precompile 后,就发现 jquery 不起作用了,好像是冲突了,我加的 js 库主要就是(按加载顺序)jquery jquery_ujs(jquery-rails ( 2.1.3) 自带),bootstrap(2.1.0),jquery-ui-1.9.1.custom.min.js,jquery-placeholder.1.3.min.js,jquery.ui.datepicker-zh-CN.js,jquery.validate.min.js,剩下都各个 controll 对应的一些 js.coffee 了。我把 jquery-ui-1.9.1 删除之后也是一样,难道是 jquery 和 bootstrap 有冲突还是怎么的啊?

view 是每个单独加还是 precompile 成 application.js 一个?看源码,然后 js 一个个点开看

css 和 js 都 precompile 一个文件,我也打开这个文件看了,确实看到第一行就是 jquery 的代码了,因为代码都被做了处理很乱,不太好查。有没有办法只 precompile 只处理 js.coffee 的代码,而 js 的这些不进行处理呢。

仔细查了一晚上,发现并不是 jquery 不起作用,而是 js.coffee 文件经过 precompile 后没起作用,经过多番尝试,仍然未成功,在 dev 模式下单个 js.coffee 编译后都没问题,哎。。。

还有个可能的问题是 js 的 header 没正确返回 mime type。试试只保留 jquery,然后在 chrome console 里用 $ 做些查询。

关掉 assets 后就正常了,还在查会不会那个地方冲突了。。。

结帖:查到原因了,是因为引入的 js 文件造成冲突,将这个 js 文件放到 public 下进行单个引用即可了,呵呵。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号