0

jobsというリソースの下に 'pack'というメソッドを作成しようとしています。ネストされたリソースメソッドで "param is missingまたは値が空です"

私のルートは次のようになります。

resources :jobs do 
    member do 
     get 'pack' => 'jobs#pack' 
    end 
    end 

そして、私のコントローラメソッドの簡易版は、次のようになります。

def pack 
    @job.pack 
    end 

パックを得るために、私が持っている:

before_action :set_job, only: %i[show edit update destroy pack] 

    # Use callbacks to share common setup or constraints between actions. 
    def set_job 
    @job = Job.find(params[:id]) 
    end 

    # Never trust parameters from the scary internet, only allow the white list through. 
    def job_params 
    params.require(:job).permit(:description, :status, :client_id, :pack_size, :user_id) 
    end 

を私は/エンド/ポイント/ジョブ/ 1 /パックを打つと、コントローラのメソッドをトリガーすることができるよ、私はよ

Parameters: {"id"=>"1"} 

param is missing or the value is empty: job

ショーやパックどちらの方法は、保存のparamsを受け取る:エラーを打ちます

なぜ#packメソッドだけが私に不足しているジョブエラーを投げているのか分かりません。なぜこれが起こっているのですか?それをどうやって止めることができますか?

コンソール出力は:

Started GET "/api/v1/jobs/1/pack?user_id=1" for 127.0.0.1 at 2017-11-20 19:57:24 +0800 
Processing by JobsController#pack as HTML 
    Parameters: {"user_id"=>"1", "id"=>"1"} 
    Job Load (0.2ms) SELECT "jobs".* FROM "jobs" WHERE "jobs"."id" = $1 LIMIT $2 [["id", 1], ["LIMIT", 1]] 
Completed 400 Bad Request in 2ms (ActiveRecord: 0.2ms) 



ActionController::ParameterMissing - param is missing or the value is empty: job: 
    app/controllers/jobs_controller.rb:87:in `job_params' 
    app/controllers/jobs_controller.rb:6:in `pack' 
+0

のparamsにあまりにも存在していることは、 'は、モデル内で作成したpack'方法を投稿することができます(?@それが何をするかpack.pack)ことを見ることができるように、私はホワイトリストに:idを追加しました –

+0

申し訳ありません、それはタイプミスでした。それは@ job.pack – JCDJulian

+0

する必要がありますええ、完全なトレースを追加できますか? –

答えて

1

問題はjob_params体の最初の部分である:あなたがparams.require(:job)のように:jobを必要としているが、ない:jobはのparamsに存在しない:

Parameters: {"user_id"=>"1", "id"=>"1"} 

したがって、requireの部分を削除して、job_paramsで次のように呼び出すことができます。

parmas.permit(:description, :status, :client_id, :pack_size, :user_id, :id) 

注:?私は

+0

右、私はそれを理解しています。私が理解できないことは#show(/ jobs /:id)メソッドがそれを処理する方法ですが、#pack(/ jobs /:id/pack)は – JCDJulian

+0

は '#show'から正確な2行を共有できませんそして '#pack'はparamsの呼び出しを含んでいますか? –

関連する問題