Rails angular 在 rails 下必须用 minify safe 的写法。

hardywu · 2014年05月20日 · 最后由 hardywu 回复于 2014年05月22日 · 2624 次阅读

被坑到了。 源代码如下

window.Scixiv.config ($httpProvider) ->
  authToken = $("meta[name=\"csrf-token\"]").attr("content")
  $httpProvider.defaults.headers.common["X-CSRF-TOKEN"] = authToken

在 development 下没问题,放 production 被 minify 之后就出问题。正确写法

window.Scixiv.config ['$httpProvider', ($httpProvider) ->
  authToken = $("meta[name=\"csrf-token\"]").attr("content")
  $httpProvider.defaults.headers.common["X-CSRF-TOKEN"] = authToken
]

我上周也分享了一些坑,不过主要是 Ajax 相关的…

https://speakerdeck.com/chitsaou/angularjs-rails-ajax-pitfalls-and-solutions

#2 楼 @chitsaou coool, 遇到了一些,不过我的解决方式一般是:

  1. 直接使用原生的 form 来构造与提交
  2. 没有必要的时候不使用 resources ( 如果不需要复用的话 )
  3. 上传文件用 angular-file 插件来解决吧

整体而言,$http 的坑还是基本上很少的。

很多地方都需要包起来~ 所以每次都包起来肯定没有坑...

5 楼 已删除

#3 楼 @lyfi2003 你的解决方式和我的完全是反过来的……

顺手发个 vim 快捷键

au FileType coffee nno <buffer><leader>p yyp:s/'//<cr>i(<esc>A)-><esc>:silent noh<CR>

方便用 coffeescript 写 minify safe 的写法:

app.factory('ResourcesFactory', [
  '$resource', '$route', 'Inflection' 光标在这行

按p 就变成这样:

app.factory('ResourcesFactory', [
  '$resource', '$route', 'Inflection'
  ($resource, $route, Inflection)->

原来还是有 angular 用户的。我以为这帖子沉定了。

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