【发布时间】:2019-01-30 13:18:15
【问题描述】:
在我的控制器/动作中,我有一些值为 nil
def my_action
@var1 = get_boolean_value || nil
@var2 = get_int_value || nil
@var3 = get_string_value || nil
# there many more, any one can happen to be nil
end
当我在其中的视图中创建 JSON 对象时,nil 值会呈现为空白:
:javascript
window.MyObj = {
var1: #{@var1},
var2: #{@var1},
var2: #{@var3}
}
问题在于,当一个值为 nil 时,它会呈现为一个空白空间,而不是 nil 本身。
:javascript
window.MyObj = {
var1: ,
var2: 33,
var2:
}
如何治疗?
【问题讨论】:
-
empty space? javascript中没有这样的东西(不是你描述的方式)......但令人困惑的是你提到了JSON,而你的问题中没有JSON -
您正在将值插值到结果中。
#{@var1}就像一个占位符,被实际值替换。因此,如果缺少该值,var1: #{@var1},将变为var1: ,- 它不会导致整行被删除,更不用说杂散逗号了。 -
顺便说一句,它是“空字符串”,而不是“空白空间”。
:后面的空格已经在您的模板中。 -
如果您的方法返回非
nil值或nil,则分配中的|| nil是多余的。如果是布尔返回值,它甚至会适得其反,因为它将false变成nil。
标签: javascript ruby-on-rails json ruby ruby-on-rails-5