2012-02-22 64 views
4

我在config.rb如何將電子郵件地址用作Rail PUT請求中的參數?

resources :password 

配置路由當參數不是一個電子郵件地址,它工作正常。

當參數是一個電子郵件地址,它會告訴我的錯誤:

Started PUT "/password/[email protected]" for 127.0.0.1 at 2012-02-22 17:04:17 +0800

ActionController::RoutingError (No route matches [PUT] "/password/[email protected]"):

UPDATE1

這是我的密碼控制器

def update 
    return_info = User.change_password(params[:id],params[:old],params[:newpw],params[:newpw2]) 

    respond_to do |format| 
     format.json { render :json => {:info => t(return_info)} } 
    end 

    end 

謝謝。

回答

10

如果使用自定義字符串,而不是ID嘗試

resources :password, :constraints => { :id => /.*/ } 
+0

它的工作,但得到另一個錯誤 「已完成406在8ms的不接受」 – jean 2012-02-22 12:01:07

+0

我認爲JSON MIME類型無法識別。你可以試試 respond_with http://apidock.com/rails/ActionController/MimeResponds/respond_with?讓我們看看params [:format] – Fivell 2012-02-22 12:39:44

3

也許我沒有正確地理解這個問題,但也許這裏的問題是@不是一個字符,你可以在URL中使用未編碼。

我懷疑的電子郵件地址需要在PARAMS傳遞之前進行編碼,你可以做到這一點,如下所示:

如果email = "[email protected]"嘗試像

URI.escape(email, '@') 

這將返回

"hello%40mac.com" 
+1

問題是電子郵件地址包含「。」,並且顯示params的值(將它們放到控制檯) – jean 2012-02-22 11:59:39

+1

然後嘗試URI.escape(電子郵件,'@。') – novemberkilo 2012-02-22 20:58:08

相關問題