【问题标题】:How to check value null in ruby on rails 3?如何在rails 3上检查ruby中的null值?
【发布时间】:2019-01-23 12:01:40
【问题描述】:

我创建了新的数组作业,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"

【问题讨论】:

  • 从读取 cmets 中您想要以数组或散列形式输出?
  • @ts 我想在数组中输出
  • 您能否将您的数组格式化为423 "jobname" 是一个奇怪的数组,它可以是['423 jobname', 424 jobname]
  • 如果您的输出数组类似于['423 jobname', '424 jobname'],请查看我更新后的答案,希望对您有所帮助
  • 这里的实际输入是什么?这些数据是您从数据库查询中获取的吗?

标签: ruby-on-rails ruby ruby-on-rails-3


【解决方案1】:

nil 值在条件下被解释为假,所以你可以这样写:

@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 

如果要显式检查,也可以使用#nil? 方法:

@jobs = []
demo.demojobs.each do | j |
    if !j.nil? 
        @jobs[j.id] = j.name
    end
end 

有一篇很好的博文解释了各种选项:https://blog.arkency.com/2017/07/nil-empty-blank-ruby-rails-difference/

【讨论】:

  • 我已经尝试了所有条件,但仍然是相同的问题数组从 0 索引开始。
  • 我不确定我是否理解 0 索引的问题,您能详细说明一下吗?
  • 我有从 423 开始的 j.id,所以我希望从 423 索引而不是 0 索引创建数组。
  • 你尝试过的答案是什么?
【解决方案2】:

在 Ruby 中是 nil,而不是 null 您可以通过调用present? 或blank? 来检查对象是否为nil。

j.name.present?

如果名称为空字符串或nil,这将返回false。

或者你可以使用

j.name.blank?

【讨论】:

    【解决方案3】:

    如何设置条件来检查j.name的空值?

    在 ruby​​ 中有很多方法可以检查 null/nil 或空字符串

    1. present?这将返回真或假

      j.name.present?
      
    2. blank?这与present?相反

      j.name.blank?
      
    3. j.name == nil

    4. empty? 可用于字符串、数组和哈希。

    编辑:

    @jobs = {}
    #in your loop
    @jobs[j.id] = j.name if j.name #you can use any condition here to check nil
    

    【讨论】:

    • 423, 424 是数组的索引,而不是作业名的值,我需要像 423 这样的输出:作业名。
    • 数组索引不能从 423 开始,如果你想这样你可以使用 hash 代替数组 @jobs = {423: 'jobname', 424: 'jobname'} 这样
    【解决方案4】:

    您可以在条件中使用present? 或blank?。你的代码应该是

    if j.name.present? #condition 
       @jobs[j.id] = j.name
    end
    

    【讨论】:

      猜你喜欢
      • 2013-03-26
      • 2012-02-19
      • 1970-01-01
      • 2010-09-27
      • 2011-08-25
      • 2022-09-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多