use*_*755 1 ruby api ruby-on-rails ruby-on-rails-4
我正在编写一个 API 来查找用户email_id。
将电子邮件作为参数发送时出现错误。
路线.rb:
Rails.application.routes.draw do
namespace :api do
resources :users, only: [:show, :index] , param: :email
end
end
Run Code Online (Sandbox Code Playgroud)
当我将电子邮件作为参数发送时,出现错误。URL 是http://localhost:3000/api/users/test@abc.com:
ActiveRecord::RecordNotFound in Api::UsersController#show
Couldn't find User with 'id'={:email=>"test@abc"}
Run Code Online (Sandbox Code Playgroud)
这是我的路线路径:
api_users_url GET /api/users(.:format) api/users#index
api_user_url GET /api/users/:email(.:format) api/users#show
Run Code Online (Sandbox Code Playgroud)
在您的电子邮件中有一个点.,例如@gmail.com。这个点有问题。
默认情况下,Rails Routes 中的动态段不接受点。
这就是为什么结果将是:
{
"sender"=>"emai@gmail",
"format"=>"com"
}
Run Code Online (Sandbox Code Playgroud)
代替
{
"sender"=>"emai@gmail.com"
}
Run Code Online (Sandbox Code Playgroud)
在您的routes.rb:
get 'message/:sender', to: 'main#message_sent', constraints: { sender: /[^\/]+/} , as: 'message_sent'
Run Code Online (Sandbox Code Playgroud)
重要的部分是constraints: { sender: /[^\/]+/},它让您通过 url 参数传递一个点。
| 归档时间: |
|
| 查看次数: |
2304 次 |
| 最近记录: |