https://github.com/ruby-china/homeland/blob/master/app/assets/javascripts/app.coffee#L117 这个判断造成的跳转,结合 https://github.com/ruby-china/homeland/blob/master/app/assets/javascripts/app.coffee#L325 这里 还有 https://github.com/ruby-china/homeland/blob/master/app/views/layouts/application.html.erb#L83 这里,应该是 turbolinks 的锅,登录成功要么补上这个赋值要么干脆刷新全站好了
笔记本上没 homeland 的开发环境。。。
又甩锅给 Turbolinks。
把 user_id 存到 meta 里:
<% if current_user %>
<meta name="current-user-id" content="<%= @current_user.id %>">
<% end %>
isLogined : ->
document.getElementsByName('current-user-id').length > 0
这样就不用老是关心变量了。
然后你会发现 Ruby China 已经加有 current-user 这个 meta。
登录后 App.current_user_id = 1107;
渲染到了 HTML 上,但是 App.current_user_id => null
App.isLogined() => false
就是说那 JS 没按预期方式执行,那我说更正下说法“没有正确的使用 Turbolinks”可以了吧...
当然你说的改法是很好的,我没注意到有这个 meta
没有修复
isLogined : ->
document.getElementsByName('current-user-id').length > 0
应该改成:
isLogined : ->
document.getElementsByName('current-user').length > 0