0
내시나 응용 프로그램에서이 필터를 가지고 :Ruby 버전에 따라 배열 또는 문자열로 Splat 하시겠습니까?
before '/:locale/*' do
# stuff...
request.path_info = params[:splat]
end
즉, 난 그냥 URL의 로케일 부분을 가져 와서이없는 것처럼 다음 응용 프로그램 것이며 진행을 수 있도록합니다. (물론 뷰를 렌더링 할 때 로케일을 사용합니다.)
이 작업은 Ruby 1.8.7에서 제대로 작동하지만 splat가 이제는 문자열 대신 하나의 항목을 가진 배열이기 때문에> = 1.9에서 중단됩니다. 작동하게하려면 params[:splat].first
을 사용해야했습니다.
제 질문은 단순히이 불일치가 발생하는 곳입니다. 그것은 단순히 Ruby 1.8 대 1.9 것입니까? 아니면 Sinatra가 어떻게 든 관련되어 있습니까?
미래에 이런 종류의 문제를보다 쉽게 해결할 수 있기를 바랍니다.
request.path_info = [*params[:splat]].first
내가 여기에 설명 : 당신이 두 경우를 처리하기 위해이 같은 일을 할 수 있도록, 문자열이나 배열이 될 수 있습니다 : [플랫]
니스, 감사합니다. 이 차이가 왜 처음에 나타나는 지에 대한 통찰력이 있습니까? 그리고 예, Sinatra README에는 배열과 문자열 인 splat의 예가 있습니다. – Felixyz