Ich versuche, eine Methode namens "Pack" unter einer Ressource namens Jobs zu erstellen."Parameter fehlt oder der Wert ist leer" in geschachtelte Ressource-Methode
Meine Strecken wie folgt aussehen:
resources :jobs do
member do
get 'pack' => 'jobs#pack'
end
end
Und die vereinfachte Version meiner Controller-Methode sieht wie folgt aus.
def pack
@job.pack
end
Und die Packung zu bekommen, die ich habe:
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
Ich bin in der Lage meines/Ende/point/Jobs/1/pack und lösen die Controller-Methode zu treffen, aber ich bin schlagen Sie den Fehler:
param is missing or the value is empty: job
Sowohl die sparen params die Show und Pack Methoden erhalten:
Parameters: {"id"=>"1"}
Ich bin mir also nicht wirklich sicher, warum nur die #pack-Methode mir den fehlenden Jobfehler beschert. Warum passiert das und wie kann ich es stoppen?
Console Ausgabe:
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'
veröffentlichen kann 'pack' Methode, die Sie im Inneren Modell erstellt haben (? @ Pack.pack, was es tut) –
Sorry, das war ein Tippfehler. Es sollte @ job.pack sein – JCDJulian
yeah, können Sie vollständige Spur hinzufügen? –