Ruby on rails 如何在RubyonRails3中检查null值?
我创建了新的数组作业,并且Ruby on rails 如何在RubyonRails3中检查null值?,ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,我创建了新的数组作业,并且j.id从423开始,循环创建从0到总作业id的数组索引,空值从0到422 id。因此,我的问题是如何设置条件来检查j.name的空值 @jobs = [] demo.demojobs.each do | j | if j.name != null #condition @jobs[j.id] = j.name end end 我正在使用rails版本3.2.11 输出: pipe 0: null 1: null . . . . 4
j.id
从423开始,循环创建从0到总作业id的数组索引,空值从0到422 id。因此,我的问题是如何设置条件来检查j.name的空值
@jobs = []
demo.demojobs.each do | j |
if j.name != null #condition
@jobs[j.id] = j.name
end
end
我正在使用rails版本3.2.11
输出:
pipe
0: null
1: null
.
.
.
.
423: "jobname"
424: "jobname"
425: "jobname"
426: "jobname"
427: "jobname"
您可以在条件中使用
present?
或blank?
。你的代码应该是
if j.name.present? #condition
@jobs[j.id] = j.name
end
您可以在条件中使用
present?
或blank?
。你的代码应该是
if j.name.present? #condition
@jobs[j.id] = j.name
end
在Ruby中是
nil
,而不是null
您可以通过调用present?
或blank?
来检查对象是否为nil
j.name.present?
如果名称为空字符串或nil
,则返回false
或者你可以使用
j.name.blank?
在Ruby中是
nil
,而不是null
您可以通过调用present?
或blank?
来检查对象是否为nil
j.name.present?
如果名称为空字符串或nil
,则返回false
或者你可以使用
j.name.blank?
nil
值在条件中被解释为false,因此您可以写入:
@jobs = []
demo.demojobs.each do | j |
if j.name
@jobs[j.id] = j.name
end
end
或者以更简洁的方式:
@jobs = []
demo.demojobs.each do | j |
@jobs[j.id] = j.name if j.name
end
如果要显式检查,也可以使用方法:
@jobs = []
demo.demojobs.each do | j |
if !j.nil?
@jobs[j.id] = j.name
end
end
有一篇很好的博客文章解释了各种选项:
nil
值在条件中被解释为false,因此您可以写:
@jobs = []
demo.demojobs.each do | j |
if j.name
@jobs[j.id] = j.name
end
end
或者以更简洁的方式:
@jobs = []
demo.demojobs.each do | j |
@jobs[j.id] = j.name if j.name
end
如果要显式检查,也可以使用方法:
@jobs = []
demo.demojobs.each do | j |
if !j.nil?
@jobs[j.id] = j.name
end
end
有一篇很好的博客文章解释了各种选择:
如何设置条件检查j.name的空值
在ruby中有很多方法可以检查null/nil
或空字符串
j.name.present?
present?
j.name.blank?
j.name==nil
empty?
可用于字符串、数组和散列@jobs = {}
#in your loop
@jobs[j.id] = j.name if j.name #you can use any condition here to check nil
如何设置条件检查j.name的空值
在ruby中有很多方法可以检查null/nil
或空字符串
j.name.present?
present?
j.name.blank?
j.name==nil
empty?
可用于字符串、数组和散列@jobs = {}
#in your loop
@jobs[j.id] = j.name if j.name #you can use any condition here to check nil
我已经尝试了所有条件,但仍然是从0索引开始的相同问题数组。我不确定是否理解0索引的问题,你能告诉我更多吗?我有从423开始的j.id,所以我想从423索引而不是从0索引创建数组。你现在的输出是什么?你尝试过的答案是什么?我尝试了所有条件,但仍然是从0索引开始的相同问题数组。我不确定我是否理解0索引的问题,你能告诉我更多吗?我有一个从423开始的j.id,所以我想从423索引而不是从0索引创建数组。你现在的输出是什么,以及你尝试过的答案?从阅读评论中,你想以数组或散列的形式输出?@ts我想以数组的形式输出你可以将你的数组格式化为
423“jobname”
是一个奇怪的数组,它可以是['423 jobname',424 jobname]
如果您的输出数组类似于['423 jobname','424 jobname']
请检查我的更新答案,希望有帮助这里的实际输入是什么?这是您从数据库查询中获取的数据吗?从阅读注释中,您希望以数组或散列形式输出吗?@ts我希望以数组形式输出您可以将数组格式化为423“jobname”
是奇怪的数组它可以是['423 jobname',424 jobname]
如果您的输出数组类似于['423 jobname',424 jobname']
检查我的更新答案,希望有帮助这里的实际输入是什么?这是您从数据库查询中获取的数据吗?423,424是数组的索引不是带有jobname的值我需要像423:jobname这样的输出。数组索引不能从423开始如果您希望这样,可以使用哈希而不是数组@jobs={423:'jobname',424:'jobname'}
像这样423,424是数组的索引不是带有jobname的值我需要像423:jobname这样的输出。数组索引不能从423开始如果你想这样,你可以使用哈希而不是数组@jobs={423:'jobname',424:'jobname'}
像这样