Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.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 如果为空,则返回默认值_Ruby On Rails_Ruby On Rails 3_Twitter - Fatal编程技术网

Ruby on rails 如果为空,则返回默认值

Ruby 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句柄为空,我希望它默认为另一个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.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