编程反思:JavaScript获取ruby判断值(true/false)

user.role.admin?返回值为true或者false,这时候可以使用JSON.parse方法转换成为js的boolean

const isAdmin = JSON.parse("<%= user.role.admin? %>")

browser.chrome?返回值为true或者nil,这时候可以使用JSON.parse就会抛出异常了,使用双!把string转化成boolean

const isAdmin = !!"<%= browser.chrome? %>"

虽然我们可以利用语言的特性返回nil来表示false,但是要兼顾上面这种情况这样的做法就不是很好了。这会导致我们把string转化成boolean要考虑到这两种情况,你不能单纯的使用一种方法来处理它们。当返回值为nil时,erb会把<%= nil %>翻译成"",而JSON.parse是无法处理空字符串的,当返回值为false时,erb会把<%= false %>翻译成"false",而这时候是用!!来转换是异常傻逼的,因为得到的果永远是true