2017-03-15 4 views
2

ジョブデータをデータベースに保存して、showページの代わりにプレビューページにリダイレクトして、送信したばかりのジョブフォームのすべての情報を表示します(実質的にはshow.html.erbページの複製)。Railsフォームのプレビューページ

現在、ユーザーが(エラーなしで)フォームを送信すると、ジョブはステータス「一時停止」で作成されます。ユーザーはpreviewページにリダイレクトされます。しかし、ジョブ情報を表示するのに問題があります。Couldn't find Job without an IDエラーが発生します。

私もjobs/_form.html.erb<%= f.hidden_field :job_id, value: @job.id %>を使用して@job.idに渡して試してみましたが、私はこのエラーを取得:Can't mass-assign protected attributes for Job: job_id

コントローラ/ jobs_controller.rb

def create 
    userprofile = current_user.userprofile 

    @job = userprofile.jobs.build(params[:job]) 
    @job.status = 'Paused' 
    @job.audit_status = 'Approved' 

    respond_to do |format| 
    if @job.save 
     format.html {redirect_to preview_path, notice: 'Job was successfully created.' } 
     format.json { render json: @job, status: :created, location: @job } 
    else 
     format.html { render action: "new" } 
     format.json { render json: @job.errors, status: :unprocessable_entity } 
    end 
    end 
end 


def preview 
    @job = Job.find(params[:id]) 
end 

答えて

2

あなたのコードはほとんど正しいです。あなたがリダイレクトで@jobオブジェクトを渡していなかった

if @job.save 
    format.html {redirect_to preview_path(id: @job.id), notice: 'Job was successfully created.' } 
    # ... 
1

redirect_to preview_path(@job) 
preview_pathのURLのparamとして idを渡します
関連する問題