2014-09-20 2 views
0

새 작업을 만들면 페이지 (/ 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) 
+0

id = 3 인 작업이 있는지 먼저 확인해야합니다. Job.find (3) –

+0

이 존재하지 않습니다 그런 다음 아이디 3 일이 존재하는지 확인하려면 다음을 실행 C 레일 : 응용 프로그램 내에서 탐색하고 실행 터미널로 이동합니다. 기묘한. 레코드를 만들 때 쇼 페이지로 리디렉션되었습니다. 이제 새 레코드를 만들면 # 4입니다. 너는 어떻게 생각하니? –

+0

그리고이 레코드 4가 실제로 테이블에 저장됩니까? 기록을 확인했는지 확인하십시오. 3. 아니요. 그러면 생성 작업에 문제가있는 것 같습니다. 이 경우 작업을 만들기위한 매개 변수를 인쇄하여 여기에 넣을 수 있습니다. –

답변

0

작업

하단 리튬 여기

는 컨트롤러의 이 3 인 데이터베이스에 Job이없는 것입니다. 수정 방법은 입니다. 이유는이 채워지지 않습니다.

특히 save 방법에 문제가 있거나 database에 문제가있는 것 같습니다. 여기에 내가 그것을 해결하기 위해 어떻게 할 것인지입니다 : 당신은 이미 컨트롤러 권리가

#app/controllers/jobs_controller.rb 
class JobsController < AppicationController 
    def new 
     @job = Job.new 
    end 

    def create 
     @job = Job.new job_params 
     @job.save 
    end 

    private 

    def job_params 
     require(:job).permit(:x, :y, :z) 
    end 
end 

- 따라서 가능성이 데이터가 데이터베이스에 저장되는 방식으로 수의 문제입니다. 이 문제는 model 또는 save 메커니즘 자체의 문제 일 수 있습니다.

#app/models/job.rb 
class Job < ActiveRecord::Base 
    belongs_to :user 
end 

#app/models/user.rn 
class User < ActiveRecord::Base 
    has_many :jobs 
end 

이 보장됩니다 모델이 문제가 발생되지 않습니다

여기에 모델이 어떻게 보일지입니다. 에 대하여 다른 문제가있을 수있는 validations, 당신은 -

DB를 - 제대로

제출하는 경우 코멘트 아웃 Job 모델의 검증 중 하나가 바로 확인한다

당신은 더 올바른 db가 설정되어 있는지 확인한다 당신의 Jobmodel

이렇게하려면, 당신은 t이 필요 오 다음 작업을 완료했는지 확인 :

$ 레이크 데시벨은 : 당신이 모델에 대해 이전에 올바른 마이그레이션을 만든 경우이 물론이다

마이그레이션!


마지막으로, 당신은 rails console 사용하여 DB에 job 기록의 존재를 확인 할 수 있습니다 :이에서

> $ rails c 
> $ jobs = Job.all 
> # -> all jobs outputted 

을, 당신은 당신의 기록이있는 위치를 확인할 수 있습니다 삽입되어 있으므로 저장된 레코드의 내용을 볼 수 있습니다.

관련 문제