如何从Rails Controller中的Postman获取数据?

问题描述:

我想问关于postman的param post,所以我可以在rails的控制器中获得它。如何从Rails Controller中的Postman获取数据?

这里是我的控制器

class Api::V1::UsersController < ApplicationController 
    before_action :get_user, only: [:show, :fullname] 
    #get all user object 
    def index 
    render :json => User.all 
    end 

    # get user object with id 
    def show 
    render :json => @user 
    end 

    # get full name of user object with id 
    def fullname 
    @hasil = @user.firstname + ' ' + @user.lastname 
    render :json => @hasil 
    end 

    # post object into model 
    def create 
    @user = User.new(user_params) 
    @user.save 
    if @user.save 
     render :json => @user 
    else 
     render :json => @user.errors.full_messages 
    end 
    end 

    private 
    def user_params 
     params.permit(:username, :firstname, :lastname, :age) 
    end 

    def get_user 
     @user = User.find(params[:id]) 
    end 
end 

当我在邮递员试试吧,我上的用户名,名字,姓氏和年龄了空。

我张贴这样

[ 
    { 
    "username": "admin2", 
    "firstname": "Reza Adha", 
    "lastname": "Hamonangan", 
    "age": 23, 
    } 
] 

我的Rails服务器日志,当我尝试后

Started POST "/api/v1/users" for ::1 at 2016-11-18 18:04:24 +0700 
    ActiveRecord::SchemaMigration Load (0.0ms) SELECT `schema_migrations`.* FROM `schema_migrations` 
Processing by Api::V1::UsersController#create as */* 
    (0.0ms) BEGIN 
    SQL (1.0ms) INSERT INTO `users` (`created_at`, `updated_at`) VALUES ('2016-11-18 11:04:25', '2016-11-18 11:04:25') 
    (4.2ms) COMMIT 
    (0.0ms) BEGIN 
    (0.0ms) COMMIT 
Completed 200 OK in 22ms (Views: 0.3ms | ActiveRecord: 7.2ms) 

我觉得我做错了什么事在我的控制器从邮递员获得POST数据。 请帮我.. 感谢您的关注。

+0

您可以将您的服务器日志参数传递,对错误的更好的痕迹? – user100693

+0

'开始POST “/ API/V1 /用户” 为:: 1在2016年11月18日18时04分24秒0700 的ActiveRecord :: SchemaMigration负荷(0.0ms)SELECT'schema_migrations'。* FROM'schema_migrations' 处理由阿比:: V1 :: UsersController#创建作为*/* (0.0ms)BEGIN SQL(1.0ms的)INSERT INTO'users'('created_at','updated_at')VALUES('二○一六年十一月一十八日11 (0.0ms)BEGIN (0.0ms)COMMIT 已完成200在22ms内完成(观看次数:0.3ms | ActiveRecord(04:25','2016-11-18 11:04:25') (4.2ms)COMMIT :7.2ms)' –

+0

在这里,似乎你的参数不是从邮递员传递过来的。 – user100693

需要存在params的user键:

[ 
    "user": { 
    "username": "admin2", 
    "firstname": "Reza Adha", 
    "lastname": "Hamonangan", 
    "age": 23, 
    } 
] 

,并允许user强PARAMS:

params(:user).permit(:username, :firstname, :lastname, :age) 
+0

身体的类型是什么?当我复制并粘贴你的JSON到身体原始,我仍然得到空结果。 –

+0

如果我使用我的get/users,我得到了这样的数据。[ { “id”:1, “username”:“admin”, “firstname”:“Reza Adha”, “lastname” :“Hamonangan”, “age”:23, “created_at”:“2016-11-18T00:00:00.000Z”, “updated_at”:“2016-11-18T00:00:00.000Z” }, { “ID”:28, “用户名”: “admina”, “名字”: “礼古尔邦节”, “姓氏”: “Hamonangan”, “时代”:23, “created_at”:“ 2016-11-18T00:00:00。000Z“, ”updated_at“:”2016-11-18T00:00:00.000Z“ } ] –

行,所以我发现从here。我的答案插入错邮递员T_T

它应该看起来像这样

{ 
    "user" : { 
     "username": "admin2", 
     "firstname": "Reza Adha", 
     "lastname": "Hamonangan", 
     "age": 23 
    } 
} 

和我没有得到标题aplication/JSON。 对此感到抱歉。谢谢@ user100693和@MurifoX