如何使用电子邮件地址作为rails PUT请求中的参数?

jea*_*ean 5 ruby-on-rails ruby-on-rails-3

我在config.rb中配置了一个路由

resources :password
Run Code Online (Sandbox Code Playgroud)

当参数不是电子邮件地址时,它工作正常.

当参数是电子邮件地址时,它将显示错误:

在2012-02-22 17:04:17 +0800开始PUT"/password/example@gmail.com.json"为127.0.0.1

ActionController :: RoutingError(没有路由匹配[PUT]"/ password/example@gmail.com.json"):

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
Run Code Online (Sandbox Code Playgroud)

谢谢.

Fiv*_*ell 10

如果你使用自定义字符串而不是id尝试

resources :password, :constraints => { :id => /.*/ }
Run Code Online (Sandbox Code Playgroud)


kap*_*lan 6

Base64.urlsafe_encode64('robocop@mail.ua')

=> "cm9ib2NvcEBtYWlsLnVh" 
Run Code Online (Sandbox Code Playgroud)

Base64.urlsafe_decode64( 'cm9ib2NvcEBtYWlsLnVh')

=> "robocop@mail.ua" 
Run Code Online (Sandbox Code Playgroud)