Với tuyến đường Sinatra, làm thế nào có thể có cả thông số được yêu cầu có tên và tham số có tên tùy chọn trong cùng một phần của tuyến đường.Tham số bắt buộc và tùy chọn cho tuyến Sinatra
tham số tuyến đường bắt buộc hoạt động tốt ở đây
get '/widgets.?:format?'
Nhưng, hãy thử kết hợp một tên paramter yêu cầu, và những thứ phá vỡ.
get '/widgets/:id.?:format?'
Yêu cầu /widgets/abc.json chuyển toàn bộ abc.json làm thông số id.
Các Sinatra biên soạn regex là: ""
/^\/widgets\/([^\/?#]+)(?:\.|%2E)?([^\/?#]+)?$/
Điều này là do regexp cho khớp ': id' là tham lam, nhưng thêm'? 'Vào phần còn lại làm cho chúng không phù hợp. Vui lòng mở [vấn đề] (https://github.com/sinatra/sinatra/issues/new), tôi có thể sửa lỗi này. –