2013-04-10 10 views
6

Quello che vogliamo è fondamentalmente questo:Giocare percorso sintassi per ignorare una parte di lumaca

/foo/*     controllers.FooController.foo 

Tuttavia questo non funziona.

Abbiamo trovato la seguente soluzione:

/foo/*ignore   controllers.FooController.foo(ignore) 

Ma questo rende il codice del metodo controllers.FooController.foo un po 'brutto. C'è un modo migliore per farlo?

+1

Cosa c'è di brutto? –

+0

@ i.am.michiel, la definizione per 'foo' sarà simile a:' def foo (ignorato: String = "") = Azione {...} '. Il codice di prova ora appare come 'foo() (fakeRequest)'. Vorrei un modo meno intrusivo di gestire una parte "ignora" in slug. – user2206922

risposta

2

Guardando il codice sopra here, il router non è in grado di affrontare la parte "slug" senza specificare un identifier ... il combinatore parser non dichiararla come optional, e il map (^^) è chiaramente usandolo così com'è.

Potrebbe essere una buona richiesta di funzionalità se non induca altri problemi in cui un pattern nasconderà tutti gli altri percorsi perché è definito più in alto nel file (o anche peggio, incluso).

E sembra che sia stato fatto apposta se guardiamo a here, possiamo capire che il parametro dinamico non può essere assegnato un valore predefinito - anzi, in questo caso ricadremo nel caso che ho appena menzionato: - /.

Il mio primo consiglio è di dirvi di usare ignore come Option[String] e la definizione dell'azione per impostarla come None (piuttosto che un vuoto String perché è più espressivo). Il mio secondo sarebbe quello di incitarvi a chiedervi se tale caso è davvero rilevante, perché è soggetto a errori e potrebbe nascondere ulteriori problemi

Problemi correlati