2016-09-03 19 views
0

この問題を見ていただきありがとうございます。私はRails 5でAPIを構築していて、POST作成リクエストに問題があります。Rails 5 API POSTパラメータを空にする

基本的に、私のAPIは、私のAPIがそれを取得し、理由がわからなくなるまでには空です。ポストマンで、このJSONオブジェクトの送信:

50: def battle_params 
=> 51: binding.pry 
    52: params = params.to_h 
    53: params.permit(:winner_score, :loser_score, :winner_id, :loser_id) 
    54: end 

    params 
    => nil 

class Api::V1::BattlesController < ApplicationController 

    protect_from_forgery with: :null_session, if: Proc.new { |c| c.request.format.include? 'application/json' } 
    wrap_parameters format: [:json] 


    # POST /battles 
    def create 
    @battle = Battle.new(battle_params) 

    if @battle.save 
     render json: @battle, status: :created, location: @battle 
    else 
     render json: @battle.errors, status: :unprocessable_entity 
    end 
    end 

    private 

    # Only allow a trusted parameter "white list" through. 
    def battle_params 
    binding.pry 
    params.permit(:winner_score, :loser_score, :winner_id, :loser_id) 
    end 
end 

私はbattle_params方法でbinding.pryを打つ、のparamsオブジェクトがnilである:

{ 
    "battle": { 
    "winner_score": 300, 
    "loser_score": 3, 
    "winner_id": 2, 
    "loser_id": 1 
    } 
} 

ことはここでは、関連するコントローラです

私の郵便配達人のリクエストは、.permitがターミナルでも見られる未定義のハッシュのメソッドであるという応答を受け取ります。

"status":500,"error":"Internal Server Error","exception":"#\u003cNoMethodError: undefined method `permit' for {}:Hash\u003e" 

NoMethodError (undefined method `permit' for {}:Hash): 
app/controllers/api/v1/battles_controller.rb:53:in `battle_params' 

私は以前この問題を抱えていませんでしたので、どのような洞察力も本当に感謝しています。

+0

を必要としますが、 'params.requireを試しました(:戦い).permit(whitelist_items)' – Nimir

答えて

4

ホワイトリストは、オブジェクトのクラス(この場合は戦闘)

params.require(:battle).permit(:winner_score, :loser_score, :winner_id, :loser_id) 
関連する問題