正好这两天也在琢磨这个事情。上网搜索了半天,找到了几个解决方案。
可以参考下这个项目:https://github.com/EmmanuelOga/simple-angular-rails-app
rails 和 angular 代码分开,开发、测试时通过 grunt-connect-proxy 插件代理访问。
这样测试也是分开的,rails 测试仍走 rspec,angular 走 karma。
不过,部署时 angular 的代码是直接放到./public 下的。
@wujian_hit 尝试示例代码。结果在require 'nlpir'
这句就卡住了。
一运行就提示cannot load such file -- fiddle/struct (LoadError)
,我装了 fiddle 的 gem 已经……
运行环境是 ubuntu 13.04, ruby 2.0.0-p248。
是我哪里写错了么……
#32 楼 @Skinnyworm 果然是。3Q
问个小白的问题啊,看到代码里有这样的写法:
def item title: "title", description: nil, pic_url: nil, url: nil
items << {:Title=> title, :Description=> description, :PicUrl=> pic_url, :Url=> url}
end
是 rails/ruby 的新特性么?函数定义能直接用 Hash 当 arguments 了?
#7 楼 @Rei 对,是我记混了。是 DHH 在文章里引用过这句话: http://37signals.com/svn/posts/3159-testing-like-the-tsa
DHH 不是一直对测试代码持否定态度么。「老板花钱雇你不是来写测试代码的。」
抛出?
最近一直是 js 和 coffeescript 混着用。
js 最头疼的是 }
的闭合。最近写 angular,经常怕改写时漏写漏删的。
coffee 比较麻烦的是函数参数。比如 timeout
,或者 .hover( handlerIn(eventObject), handlerOut(eventObject) )
这种双函数参数的,写起来就有点麻烦,要格外留心。
#7 楼 @chairy11 我觉得 还是按#4 楼 @jiang_plus 说的,查查 click 事件是不是触发了,加行 console.log 的……
额 有没有可能这个 a 是动态插入的?
#3 楼 @shangrenzhidao 其实 html5 播放也有些问题比较麻烦,比如音频数据传到一半断了怎么处理什么的。
ui 挺好看的。logo 是个什么啊?看了半天没看出来。
controls 属性不定义就是不显示自带的控制部分。参考:http://www.w3schools.com/tags/tag_audio.asp
然后自己写个播放器的。
额 我用 slim…… 如果是个很长的 view,缩进确实是挺麻烦的。可以考虑 partial 重构下。
这种用户随便修改 url 的情况,标准处理方式应该是 404。
有时我偷懒,就 fallback 到指定页面的了,比如:
get 'reader/sites/:query' => 'reader#sites', as: 'reader_sites', constraints: QuerySiteConstraint
# fallback to index
get 'reader/sites/:query', to: redirect('/reader')
get 'reader/sites', to: redirect('/reader')
:query 符合 constraint 的话,执行第一条。否则,第二种,就是你说的用户随便改的情况,执行第二条。如果没带参数的话,第三条。
@luliangshu 只是说^、$两个 anchor 不能用吧,其他的还是可以的。
比如:
get 'photos/:id', to: 'photos#show', constraints: { id: /[A-Z]\d{5}/ }
匹配 /photos/A12345
可以用 Segment Constraints 吧。
http://guides.rubyonrails.org/routing.html#segment-constraints
额 几天没来回复了这么多…… 谢谢各位的建议。
@saiga 这也是个方法哈,没想到过,谢谢。
可以再开一个命令行窗口,tail -f log/development.log
,这样就能看到 puts 出来的部分了……
view 里面,处理 errors 的部分,不用 full_messages,
这样做,errors.each do |name, msg|
,那么,msg 就是'名字不能为空!!!!',name 是属性名……
还有写在 js 文件里的。看 main.js。 http://www.teehanlax.com/story/medium/