2015-12-03 47 views
0

我正在作出要求 http://localhost:3000/templates/2.jpg?template_usage=0Rails控制器不解碼URL。這是正確的嗎?

和一切工作正常。 但是,當我提出此類請求 http://localhost:3000/templates/2.jpg%3Ftemplate_usage%3D0

我收到 的ActionController :: UnknownFormat - 的ActionController :: UnknownFormat: 因爲控制器瞭解到,格式爲JPG template_usage = 0

這是預期?行爲。我怎麼能解決這個問題?

這是控制器代碼

def show 
    respond_to do |format| 
     format.html do 
... return html 
     end 
     format.jpg do 
... return jpg 
     end 
    end 
end 
+0

簡單,只是不要轉義URL中的字符。如果你確實逃避了它們,你的結果正是你特意逃離邊界角色所期望的結果,所以它們不能以正常方式解釋。 –

+0

我不是逃避他們。一些網站包含我們的鏈接,他們在那裏逃脫(原因不明),然後當用戶點擊他們被引導到我們的網站,並得到一個錯誤。 – thebravoman

+0

聽起來像其他網站不正確地處理您的網站的網址。他們如何進入其他網站?你通過表單或其他方式提交它們嗎? –

回答

0

這是完全正確的,它正是逃逸字符的宗旨....如果你想有一個?被作爲數據不作爲參數,開始你會通過逃避它。

如果出於某種原因,您必須通過轉義字符,那麼您必須自己分析格式,但這是一種代碼異味。

def show 
    my_format = params[:format].split('?').first 
    case my_format 
    when 'jpg' 
    ... 

請注意,您還需要傳遞任何參數並自己解析它們。

相關問題