2013-04-10 19 views
6

gì chúng tôi muốn là về cơ bản này:Chơi tuyến đường cú pháp cho bỏ qua một phần của sên

/foo/*     controllers.FooController.foo 

Tuy nhiên điều này không hoạt động.

Chúng tôi đã tìm thấy cách giải quyết như sau:

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

Nhưng điều này làm cho mã của phương pháp controllers.FooController.foo hơi xấu xí. Có cách nào tốt hơn để làm điều này?

+1

Điều gì xấu xí với điều đó? –

+0

@ i.am.michiel, định nghĩa cho 'foo' sẽ trông giống như:' def foo (ignore: String = "") = Action {...} '. Mã thử nghiệm bây giờ trông giống như 'foo() (fakeRequest)'. Tôi muốn một cách ít xâm nhập hơn để xử lý một phần "bỏ qua" trong sên. – user2206922

Trả lời

2

Nhìn vào đoạn code trên here, router là không có khả năng để đối phó với các phần "sên" mà không chỉ định một identifier ... các combinator phân tích cú pháp không khai báo nó như tùy chọn, và map (^^) là rõ ràng sử dụng nó như là. Nó có thể là một yêu cầu tính năng tốt nếu nó không gây ra các vấn đề khác, nơi một mẫu sẽ ẩn tất cả các tuyến khác vì nó được xác định cao hơn trong tệp (hoặc thậm chí tệ nhất, bao gồm). Và có vẻ như nó đã được thực hiện với mục đích nếu chúng ta nhìn here, chúng ta có thể chỉ ra rằng tham số động không thể được gán một giá trị mặc định - thực ra, trong trường hợp này chúng ta sẽ rơi vào trường hợp tôi vừa mới đề cập :-/.

Lời khuyên đầu tiên của tôi là cho bạn biết sử dụng ignore làm Option[String] và định nghĩa hành động để đặt thành None (chứ không phải là trống String vì nó mang tính biểu cảm hơn). Thứ hai của tôi sẽ khiến bạn ngạc nhiên nếu trường hợp đó thực sự có liên quan, bởi vì nó dễ bị lỗi và có thể ẩn các vấn đề khác.

Các vấn đề liên quan