2012-11-04 7 views
11

Mam następującą trasę:Szyny zwyczaj trasa z ograniczeniami - regexp znaki kotwiące nie są dozwolone w wymogach routingu

get 'users/:user_id/:name', to: 'profiles#show', 
    :constraints => { :name => /[a-zA-Z0-9_]+$/ }, as: 'user_profile' 

która produkuje błąd:

Regexp anchor characters are not allowed in routing requirements: /[a-zA-Z0-9_]+$/ 

Więc dostać że^charakter jest niedozwolone, ale nie jest pewien, który znak generuje ten konkretny błąd routingu.

Odpowiedz

10

W regex mamy dwie kotwice:

  1. początku linii/String ^
  2. Koniec linii/string $

spróbować usunąć $ od wzorca i powinno być dobrze, aby przejść ...

+4

Istnieją również "\ A" i "\ Z" tych, których znam. – rausch

+1

@rausch - Ogólnie mówiąc, w wyrażeniach regularnych lepiej używać do tego celu kija i dolara. Niektóre środowiska (JavaScript, POSIX, XML) nie obsługują "\ A" i "\ Z". –

+0

@ Ωmega W Ruby nie powinieneś tego robić; zawsze sięganie po '^' i '$' może prowadzić do luk w zabezpieczeniach: http://homakov.blogspot.ru/2012/05/saferweb-injects-in-various-ruby.html http://guides.rubyonrails.org /security.html#regular-expressions –

Powiązane problemy