새 작업을 만들면 페이지 (/ jobs/[: id])를 표시하도록 리디렉션됩니다. 그러나 페이지를 다시로드하거나 작업을 편집하려고하면 제목에 오류가 발생합니다. set_job이 있는데, 이는 내가 보는 한 올바르게 설정되어 있으며 오류로 표시되어 있습니다.'id'= 3 인 작업을 찾을 수 없습니다.
class JobsController < ApplicationController
before_action :set_job, only: [:show, :edit, :update]
before_action :authenticate_user!, except: [:show, :index]
def index
@jobs = Job.published.order('created_at DESC').paginate(:page => params[:page], :per_page => 20)
end
def show
end
def new
@job = Job.new
end
def edit
end
def create
@job = Job.new(job_params)
respond_to do |format|
if @job.save
format.html { redirect_to @job }
format.json { render :show, status: :created, location: @job }
else
format.html { render :new }
format.json { render json: @job.errors, status: :unprocessable_entity }
end
end
end
def update
respond_to do |format|
if @job.update(job_params)
format.html { redirect_to @job }
format.json { render :show, status: :ok, location: @job }
else
format.html { render :edit }
format.json { render json: @job.errors, status: :unprocessable_entity }
end
end
end
private
def set_job
@job = Job.find(params[:id])
end
def job_params
params.require(:job).permit(:name, :description, :image, :location, :deleted, :user_id, :tag_list)
end
end
로그 :
Job Load (0.3ms) SELECT "jobs".* FROM "jobs" WHERE "jobs"."id" = $1 LIMIT 1 [["id", 3]]
Completed 404 Not Found in 74ms
ActiveRecord::RecordNotFound (Couldn't find Job with 'id'=3):
app/controllers/jobs_controller.rb:56:in `set_job'
로그 2 부
Started POST "/jobs" for 188.246.77.192 at 2014-09-20 22:11:03 +0000
Processing by JobsController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"8gO/Q8ktERzKdMzDtB8KEU6CH8oIayNAb2AZhUzL2d0=", "job"=>{"name"=>"My first job", "description"=>"test", "tag_list"=>"rails, programmi
ng", "location"=>"Red River, United States", "user_id"=>"1"}, "_wysihtml5_mode"=>"1", "commit"=>"Submit"}
User Load (0.5ms) SELECT "users".* FROM "users" WHERE "users"."id" = 1 ORDER BY "users"."id" ASC LIMIT 1
(0.2ms) BEGIN
SQL (0.4ms) UPDATE "users" SET "updated_at" = '2014-09-20 22:11:03.154670', "last_seen_at" = '2014-09-20 22:11:03.154670' WHERE "users"."id" = 1
(4.3ms) COMMIT
(0.2ms) BEGIN
User Load (0.5ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT 1 [["id", 1]]
(0.3ms) SELECT COUNT(*) FROM "jobs" WHERE "jobs"."user_id" = $1 AND ("jobs"."created_at" BETWEEN '2014-09-20 00:00:00.000000' AND '2014-09-20 22:11:03.168092') [["user_id", 1]]
SQL (0.3ms) INSERT INTO "jobs" ("created_at", "description", "location", "name", "tag_list", "updated_at", "user_id") VALUES ($1, $2, $3, $4, $5, $6, $7) RETURNING "id" [["create
d_at", "2014-09-20 22:11:03.170612"], ["description", "test"], ["location", "Red River, United States"], ["name", "My first job"], ["tag_list", "rails, programming"], ["updated_at",
"2014-09-20 22:11:03.170612"], ["user_id", 1]]
(3.0ms) COMMIT
Redirected to http://example.com/jobs/3
Completed 302 Found in 27ms (ActiveRecord: 9.6ms)
id = 3 인 작업이 있는지 먼저 확인해야합니다. Job.find (3) –
이 존재하지 않습니다 그런 다음 아이디 3 일이 존재하는지 확인하려면 다음을 실행 C 레일 : 응용 프로그램 내에서 탐색하고 실행 터미널로 이동합니다. 기묘한. 레코드를 만들 때 쇼 페이지로 리디렉션되었습니다. 이제 새 레코드를 만들면 # 4입니다. 너는 어떻게 생각하니? –
그리고이 레코드 4가 실제로 테이블에 저장됩니까? 기록을 확인했는지 확인하십시오. 3. 아니요. 그러면 생성 작업에 문제가있는 것 같습니다. 이 경우 작업을 만들기위한 매개 변수를 인쇄하여 여기에 넣을 수 있습니다. –