2016-07-20 3 views
1

Ich möchte überprüfen, ob meine URL mit bestimmten Strings danach zu einer Datenbank startet. Die Zeichenfolgen werden in einem Array gespeichert, und da starts_with? mehrere Werte akzeptiert, möchte ich alle Array-Werte in starts_with? abrufen.Ruby: Übergeben Sie ein Array an Starts_with?

array = ["www.example.com/content1", "www.example.com/content2", "www.example.com/content3"] 

save_url = url.starts_with?() #here I want to insert all array values, but how? 

if save_url #I want to check if save_url is true so my entries are somewhat filtered 
DBTable.create(url: url) 

Also meine Frage ist, wie die Array-Werte zu Starts_with? und wie man überprüft, ob save_url wahr ist. Ich bin nicht so gut in Arrays und Loops in Ruby, so dass jede Hilfe geschätzt wird!

+0

Was ist der Wert von 'URL'? Und welche Art von Check möchten Sie hier? Möchten Sie prüfen, ob 'URL' mit einem beliebigen Wert im Array beginnt oder ob die URL mit allen Einträgen im Array beginnt? – Surya

+0

URL ist nur eine Adresse wie www.example.com/content1/test.html und ich möchte testen, ob die URL mit einem der Array-Werte – GoYoshi

Antwort

6

können Sie versuchen, Array mit Splat-Operator setzen (*) wie folgt:

url = 'www.example.com/content1/test.html'# => "www.example.com/content1/test.html" 
array = ["www.example.com/content1", "www.example.com/content2", "www.example.com/content3"] 
save_url = url.starts_with?(*array) #=> true 
+1

beginnt, tiefer zu tauchen und zu verstehen, wie/warum das funktioniert, überprüfen Sie http://blog.honeybadger.io/ruby-splat-array-manipulation-destrukturing/ – jaydel

2

Sie könnten das Array von URLs passieren, wie zum start_with folgt? Methode.

1

start_with akzeptiert mehrere Strings als Argumente, aber kein Array mit mehreren Strings, glaube ich nicht.

Warum Loop Array und Aufruf von start_with innerhalb der Schleife;

array.each do | valid_url | 
    save_url = url.starts_with? valid_url 
    return unless save_url 
    DBTable.create(url: url) 
end