2016-06-21 11 views
0

Ich versuche, eine Ruby rspec mit Capybara zu erstellen und ich bekomme diesen Fehler beim Versuch, einen Teil einer Zeichenfolge aus einem Hash zu entfernen: kann nicht eingefrorenen String ändernKann nicht eingefroren String-Fehler mit gsub und Hash

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') 

Jede Hilfe wäre willkommen!

Antwort

1

Der Schlüsselname ist eingefroren, so dass Sie ihn nicht an Ort und Stelle ändern können - verwenden Sie einfach gsub statt gsub! so dass es eine modifizierte Kopie der Zeichenfolge zurückgibt, anstatt zu versuchen, Inplace-Änderung zu tun

+0

Nachdem ich gerade gsub, bekomme ich einen neuen Fehler: keine implizite Umwandlung von Enumerator in String –

+0

@ DonaldC. weil Gsub zwei Parameter nimmt, wenn Sie möchten, dass es eine Zeichenfolge zurückgibt - ich vermute, Sie wollen 'random_doc.gsub ('doc', '')' –

+0

Hat dies nur nach dem Posten realisiert. Danke für die Hilfe, sehr geschätzt! –