2016-06-21 50 views
0

我试图用capybara创建ruby rspec,并且在尝试从散列中删除部分字符串时出现此错误:无法修改冻结字符串无法使用gsub和散列修改冻结字符串错误

scenario "check doc" do 
docs = { 
    'A doc' => 'a.txt', 
    'B doc' => 'b.txt', 
    'C doc' => 'c.txt' 
} 
random_doc = docs.keys.sample 
page.should have_css('.class', :text => 'Document ' + random_doc.gsub!(' doc') + ' was selected') 

任何帮助将不胜感激!

回答

1

键名是冻结的,所以你不能修改它 - 只需使用gsub而不是gsub!以便它返回字符串的修改副本,而不是尝试进行修改

+0

在完成gsub之后,我收到一个新错误:没有将枚举器隐式转换为字符串 –

+0

@DonaldC。因为gsub需要两个参数,如果你想它返回一个字符串 - 我猜你想'random_doc.gsub('doc','')' –

+0

刚发布后才意识到这一点。感谢您的帮助,非常感谢! –