2012-03-25 17 views
12

Sto cercando di usare espressioni regolari come il condizionale in un rubino (1.9.2) if ma mantiene restituendo vero anche quando l'espressione regolare restituisce nilUtilizzando regex in Ruby se la condizione

if (params[:test] =~ /foo/) 
    return "match" 
else 
    return "no match" 
end 

È possibile che questo restituisce "match", anche quando Rails.logger.info(params[:test]) mostra prova come impostato "bar"

+1

Non riesco a riprodurre questo (e non dovrebbe accadere). Probabilmente si suppone che 'params [: test] ==" bar "' sia difettoso. –

+0

Ho appena controllato in irb la riga di comando e non riesco a riprodurre la tua situazione. '" bar "= ~/foo /' restituisce nil. Il tuo problema è da qualche altra parte ... –

+0

Ho Rails.logger.info (params [: test]) la riga sopra l'istruzione if e emette "bar" – Exupery

risposta

33
if params[:test] =~ /foo/ 
    # Successful match 
else 
    # Match attempt failed 
end 

funziona per me. Eseguire il debug di ciò che è in params[:test]