Ruby on rails 如果为空,则返回默认值
如果客户的twitter句柄为空,我希望它默认为另一个twitter句柄。对于本例,假设默认句柄为@googleRuby on rails 如果为空,则返回默认值,ruby-on-rails,ruby-on-rails-3,twitter,Ruby On Rails,Ruby On Rails 3,Twitter,如果客户的twitter句柄为空,我希望它默认为另一个twitter句柄。对于本例,假设默认句柄为@google twitter_handle = customer.twitter_name #add @ sign if user name doesn't have it twitter_handle = '@' + customer.twitter_name.gsub.to_s('@', '') unless twitter_handle.blank? tape_name = name.t
twitter_handle = customer.twitter_name
#add @ sign if user name doesn't have it
twitter_handle = '@' + customer.twitter_name.gsub.to_s('@', '') unless twitter_handle.blank?
tape_name = name.truncate(27)
"I just bought #{twitter_handle} product}"
我试过:
twitter_handle = customer.twitter_name || "@google"
twitter_handle = '@' + customer.twitter_name.to_s.gsub('@', '')
我知道错误与这一行有关,因为如果我对它进行注释,它会起作用:
twitter_handle = '@' + customer.twitter_name.to_s.gsub('@', '')
它去掉了整个用户句柄,只返回空白
tape_name = name.truncate(27)
"I just bought #{twitter_handle} product}"
但我得到了这个错误:
Sorry, that page does not exist:
Twitter::Error::NotFound in ProductsController#download
试一试:
代码
没有“@”的测试
带“@”的测试
谢谢,真是太棒了!唯一的问题是twitter_handle[/^@/]从twitter句柄中删除@符号,并且如果其不存在@符号,则不会添加@。
[/^@/]
用于测试字符串开头是否有@。实际上,它不应该把它剥掉。从irb中的测试结果中检查我的更新答案。顺便说一句,我使用的是Ruby 1.9.3。是的,它的效果非常好,但是如果用户输入@bjernigan52,那么结果是2,所以看起来像@bjernigan52。使用gsub,如果用户的名字中已经有@符号,我可以删除它,然后再次添加at符号。从代码的第二行:如果它包含@符号,那么它只返回nil,否则它会将twitter\u handle设置为'@'+twitter\u handle
。我已经更新了答案,用@符号显示测试。
twitter_handle = customer.twitter_name ||= '@google'
twitter_handle[/^@/] ? nil : twitter_handle = "@#{twitter_handle}"
1.9.3p194 :001 > twitter_name = 'bjernigan52' #Set without '@' sign
=> "bjernigan52"
1.9.3p194 :002 > twitter_handle = twitter_name ||= '@google'
=> "bjernigan52"
1.9.3p194 :003 > twitter_handle[/^@/] ? nil : twitter_handle = "@#{twitter_handle}"
=> "@bjernigan52"
1.9.3p194 :004 > puts twitter_handle
@bjernigan52
=> nil
1.9.3p194 :001 > twitter_name = '@bjernigan52' #Set with '@' sign
=> "@bjernigan52"
1.9.3p194 :002 > twitter_handle = twitter_name ||= '@google'
=> "@bjernigan52"
1.9.3p194 :003 > twitter_handle[/^@/] ? nil : twitter_handle = "@#{twitter_handle}"
=> nil
1.9.3p194 :004 > puts twitter_handle
@bjernigan52
=> nil