Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails RubyonRailsAPI=>POST请求不起作用_Ruby On Rails_Ruby_Api_Post_Request - Fatal编程技术网

Ruby on rails RubyonRailsAPI=>POST请求不起作用

Ruby on rails RubyonRailsAPI=>POST请求不起作用,ruby-on-rails,ruby,api,post,request,Ruby On Rails,Ruby,Api,Post,Request,我目前正在使用Postman向以下路径发出POST请求:“localhost:3000/members/login”。该职位申请的内容如下: { "email": "user@email.com", "password": "password" } def login puts params.inspect puts member_params.to_s member = Member.find_by(email: params[:email].to_s.downcase

我目前正在使用Postman向以下路径发出POST请求:“localhost:3000/members/login”。该职位申请的内容如下:

{ 
  "email": "user@email.com",
  "password": "password"
}
def login
  puts params.inspect
  puts member_params.to_s
  member = Member.find_by(email: params[:email].to_s.downcase)
end
...
def member_params
  params.require(:member).permit(:email, :password, :password_confirmation)
end
Started POST "/members/login" for 127.0.0.1 at 2018-01-02 18:56:28 -0800
(2.5ms)  SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC
Processing by MembersController#login as */*
<ActionController::Parameters {"controller"=>"members", "action"=>"login"} permitted: false>
Completed 400 Bad Request in 1ms (ActiveRecord: 0.0ms)



ActionController::ParameterMissing (param is missing or the value is empty: member):

app/controllers/members_controller.rb:94:in `member_params'
app/controllers/members_controller.rb:65:in `login'
路线定义如下:

{ 
  "email": "user@email.com",
  "password": "password"
}
def login
  puts params.inspect
  puts member_params.to_s
  member = Member.find_by(email: params[:email].to_s.downcase)
end
...
def member_params
  params.require(:member).permit(:email, :password, :password_confirmation)
end
Started POST "/members/login" for 127.0.0.1 at 2018-01-02 18:56:28 -0800
(2.5ms)  SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC
Processing by MembersController#login as */*
<ActionController::Parameters {"controller"=>"members", "action"=>"login"} permitted: false>
Completed 400 Bad Request in 1ms (ActiveRecord: 0.0ms)



ActionController::ParameterMissing (param is missing or the value is empty: member):

app/controllers/members_controller.rb:94:in `member_params'
app/controllers/members_controller.rb:65:in `login'
我在控制台收到的输出如下:

{ 
  "email": "user@email.com",
  "password": "password"
}
def login
  puts params.inspect
  puts member_params.to_s
  member = Member.find_by(email: params[:email].to_s.downcase)
end
...
def member_params
  params.require(:member).permit(:email, :password, :password_confirmation)
end
Started POST "/members/login" for 127.0.0.1 at 2018-01-02 18:56:28 -0800
(2.5ms)  SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC
Processing by MembersController#login as */*
<ActionController::Parameters {"controller"=>"members", "action"=>"login"} permitted: false>
Completed 400 Bad Request in 1ms (ActiveRecord: 0.0ms)



ActionController::ParameterMissing (param is missing or the value is empty: member):

app/controllers/members_controller.rb:94:in `member_params'
app/controllers/members_controller.rb:65:in `login'
你可能已经猜到了,我对这件事还不太熟悉。我特别想要的是:

1是否有一个快速解决方案,说明为什么参数email和password没有从Postman POST请求传递到API中,以帮助我使其正常工作和


2为了使这个答案对将来可能用谷歌搜索这个问题的人更有帮助,当API调用特别是POST请求没有按预期传递参数时,是否有一个建议步骤的快速清单

我认为您的json应该是 {member:{emai:{uuuuuuuuuuuuu,password:{uuuuuuuuuuuuu}}

您的member\u params函数要求向其传递一个成员,该成员不包括在您从Postman发送的参数中

您没有看到任何打印内容,因为member_params函数是before_操作,这意味着它发生在调用登录函数之前

更改“邮递员”中的内容以包含它

{ 
    "member":
        {
            "email": "email address",
            "password": "password"
        }
}

我不知道postman的情况,如果您能展示一下您的http请求是什么样子,那就最好了。请尝试将params.require:member.permit更改为params.permit,因为您没有发送嵌套在成员密钥中的参数。