不知道三巨头一起搞的 Web assembly 怎么样了,成熟以后前端也会百花齐放吧,用 ruby 写前端不是梦。
你用的什么?EC2 吗?如果你没有改端口号,要看看 aws 默认安全策略里,3000 端口是不是开放的。我建议你先别折腾其他的,直接 WEBrick 启动 server 以后先外网能访问了再改成其他的。
#6 楼 @chimingphang 如果你这几个链接用了不同的 action,就可以用 5 楼的方法。要是你的链接用的 action 是重复的,不同的只是 params,可以用 original_fullpath 方法配合正则表达式来做区分。
这个图标的意思是,github 用的是 unicorn?
感觉这个&.不是特别好用啊,只有在前个方法返回 nil 的场景下才可以用。
翻译成。夜,你没有出轨。
还是有很多的啦。比如《元编程》、《Ruby 设计模式》的作者都是从 java 转过来的。很多程序员,底子很好的,编程的基本功相当扎实,通常参与项目用什么语言是随便的,只要花一两个月适应下语法和语言特点即可,不会死抱着一种语言不放。会挑语言的,那是对自己的跨语言能力没有信心。
既然這種抱怨是如此的浪費人生和沒有意義,那为什麼有些人還沉迷於此呢?我得出的一個不成熟的結論是:這样會讓這些人看起來在社區中活躍。他們做不到日复一日的艱辛努力,就在有機會的時候跳出來試圖留下些亂糟糟的塗鴉證明自己的存在意義:耶!我盡力了!我表態了!我幹倒了...恩...Turbolinks? 等等,我們這個禮拜要搞的好像是 CoffeeScript?不對,是 Bundler? 草,管他的,反正幹倒什麼就對了!耶!!!
笑死。。。DHH 眼中的键盘侠
循环了吧,你没有输入,它就会一直等待啊。
中文书真不多,我也收一本吧。
#6 楼 @night_7th 对的,这个 vote 数量很高的,当初出于好奇把 vote 前几页的问题都看了一遍,最高的居然是怎么写一个 case 语句,原来老外也是不看语法书的哈哈。
感觉这个新站,页面加载速度比原来快多了。
#6 楼 @lvjian700 学习了,谢谢你。。。
这个我记得 stackoverflow 上也有同样的问题。
vim 里有没有哪个快捷键是可以自动调整缩进的?
老实说,每次看 Rails 的源代码都感觉和我用的不是同一种语言,但 Rails 用起来却十分舒服。所以说,黑盒不要紧,关键是接口要 6。
:plus1: 信息量好大,慢慢消化。
后端 java services,前端 rails?和亚马逊有点像啊。
#9 楼 @qinfanpeng 你也很有经验哒,只是我这样的乌龙太少人会犯了。
app/asserts/javascripts目录下剩下的是每个controller对应的coffee脚本,都是空白的,没有在其中增加代码。
我怀疑是某个 Gem 和 turbolinks 冲突,于是 new 了一个新的 rails demo,只加载 rails 基本的 gem。然后在 layout 里只写一个导航栏,发现也依然有这个问题。
看了看 Trubolinks 的这段切页代码
changePage = (title, body, csrfToken, runScripts) ->
triggerEvent EVENTS.BEFORE_UNLOAD
document.title = title
document.documentElement.replaceChild body, document.body
CSRFToken.update csrfToken if csrfToken?
setAutofocusElement()
executeScriptTags() if runScripts
currentState = window.history.state
progressBar?.done()
triggerEvent EVENTS.CHANGE
triggerEvent EVENTS.UPDATE
executeScriptTags = ->
scripts = Array::slice.call document.body.querySelectorAll 'script:not([data-turbolinks-eval="false"])'
for script in scripts when script.type in ['', 'text/javascript']
copy = document.createElement 'script'
copy.setAttribute attr.name, attr.value for attr in script.attributes
copy.async = false unless script.hasAttribute 'async'
copy.appendChild document.createTextNode script.innerHTML
{ parentNode, nextSibling } = script
parentNode.removeChild script
parentNode.insertBefore copy, nextSibling
return
根据我的理解,Turbolinks 不会重新加载 head 里已载入过的 js 脚本,只会再运行一遍 body 里 js 语句。但是我打开 firebug 发现,每次我切换页面,浏览器就重新从本地的 bfcache 里 get 了一次 head 里的 js 脚本。另外我又看了 jquery_ujs 的代码
if ( $.rails !== undefined ) {
$.error('jquery-ujs has already been loaded!');
}
jquery_ujs 里的既然有防止重复载入的语句,那么为何里面的事件还是会被重复 bind?是否和浏览器的 cache 机制有关?
#6 楼 @killernova 好吧,我也不懂了。你当前的 Gem 安装目录是 /Users/killernova/.rvm/gems/ruby-2.3.0,为何上面会报/Users/killernova/.rvm/gems/ruby-2.2.0/gems/nokogiri-1.6.7这个目录的错,难道你gemfile里含有ruby的版本号,一到目录下面就被rvm自动切成2.2.0了?
#4 楼 @killernova 用 gem env 看下当前设置
/usr/local/Cellar/automake/1.15/share/automake-1.15/config.guess 这个文件拷贝到你的编译目录下替换掉原来的 config.guess
#1 楼 @qinfanpeng 恩,感谢解答。我再补充和追问一下,这里我并没有自己写任何 js 代码,只是利用 remote: true 来完成 ajax 提交。这是没有使用 Turbolinks 之前所有的 click 事件,都是 jquery_ujs 里绑定的,很正常。
下面是使用了 Turbolinks 之后的 click 事件,每个相同的事件都被重复绑定了三次,导致我在网页上点下提交,会触发三次 ajax 提交。
我不解的是为何相同的事件会重复绑定三次,在我未切换页面前,是正常的,但一切换页面,似乎 click 事件就会被多绑定一次。