Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何在RubyonRails3中检查null值?_Ruby On Rails_Ruby_Ruby On Rails 3 - Fatal编程技术网

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
或空字符串

  • 这将返回true或false

    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
    或空字符串

  • 这将返回true或false

    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'}
    像这样