2017-03-15 77 views
2

我想將作業數據保存到數據庫中,並重定向到預覽頁面(而不是show頁面),該頁面顯示剛剛提交的作業表單中的所有信息(基本上是show.html.erb頁面的副本)。Rails form preview page

當前,當用戶提交表單(沒有錯誤)時,作業創建時狀態爲「已暫停」。用戶被重定向到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

你的代碼幾乎是正確的。通過id作爲一個URL參數有關preview_path

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

你並沒對重定向通過@job對象:

redirect_to preview_path(@job)