2016-07-10 76 views
0

之前我在西納特拉,我不知道該如何處理我的問題:西納特拉過濾

我要「送」給捲曲自定義消息時,他試着走了錯誤的道路上。

捲曲http://localhost:port/blabla 這是一個錯誤404,但我想送他喜歡的事情「的錯誤嘗試其他路徑」

我這個嘗試:

before'/*' do 
    if (params[:splat].to_s =~ /path_i_want/) != 2 
    'wrong path' 
    end 
end 

raise 404,但它不工作。

請問您能幫我嗎?

問候。

+0

爲什麼' != 2'?你期望在索引'1'和'0'處有什麼字符?你想讓你的正則表達式匹配整個字符串還是隻是一個子字符串?我在問,因爲比較使用正則表達式的字符串會更快。 – spickermann

+0

是的,我應該使用比較而不是正則表達式。但我並沒有解決我的問題。我不知道該怎麼做。 – echo55

+0

您是否考慮添加'puts params.inspect'來調查splat實際捕獲的內容? – spickermann

回答

0

Sinatra有一個用於404的內置處理程序,請參閱Error Handling頁面。你可以在那裏做你所有的邏輯。

未找到

當西納特拉:: NOTFOUND引發異常,或 響應的狀態代碼是404,NOT_FOUND處理程序被調用:

not_found do 
    'This is nowhere to be found.' 
end 
+0

非常感謝。 – echo55

+0

@ echo55如果這個答案解決了你的問題,你應該通過點擊左邊的複選標記來接受它。接受答案有助於未來可能試圖解決類似問題的讀者。 – MarsAtomic