【问题标题】:How can I still do gsub even if there is a nil?即使有零,我怎么还能做 gsub?
【发布时间】:2011-02-22 06:12:15
【问题描述】:

我有以下内容,当方法出现“nil”时它会爆炸?在这种情况下,我怎么能默认不替换?

 message.gsub("{FirstName}", contact.first_name).
         gsub("{LastName}", contact.last_name).
         gsub("{Title}", contact.title).
         gsub("{Company}", contact.company_name.clear_company).
         gsub("{Colleagues}", colleagues.to_sentence).

例如,当 contact.title 为 nil 时,我得到一个错误。在那种情况下,我该如何防止这种情况发生?

【问题讨论】:

    标签: ruby-on-rails gsub


    【解决方案1】:

    我想您可以尝试将.to_s 附加到每个变量?前任。 contact.first_name.to_s。如果为nil,则变为""。

    【讨论】:

    • 有没有办法包含默认值,我尝试使用 || “默认”,但它不起作用....
    • 是的,它应该可以工作。我刚刚在 irb 中使用 ruby​​ 1.9.2 进行了测试:“一二三”.gsub(“二”,nil || “LOL”),它返回“一 LOL 三”
    • 刚刚在 irb 中使用 ruby​​ 1.9.2 进行了测试:nil.to_s => ""
    • 您现在遇到的问题是什么?你做了|| “默认”以及发生了什么?
    • 我尝试使用调试器,但找不到问题...全部在一行中...。我还应该使用 to_s 吗?
    【解决方案2】:

    我认为这将是一个三元运算符的好地方。

    .gsub("{Title}", contact.title ? contact.title : "default").
    

    如果联系人标题存在,那么它将使用它,如果不存在,它将使用“默认”。

    【讨论】:

    • 我刚刚在三元上看到了其他 cmets,但这解释了它。需要尝试一下,看看它是如何工作的。我想我明白了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多