私のフォームは新しいジョブを作成するときに機能しますが、フォームを送信して検証エラーが発生すると(そしてフォームを再送信しようとすると)、コントローラーの更新メソッドに移動するようです(ActiveRecord::RecordNotFound
IDが設定されていないためにスローされます) 。
私のコントローラー:
class JobsController < ApplicationController
def new
@job = Job.new
end
def edit
@job = Job.find(params[:id])
end
def create
@job = Job.new(params[:job])
if @job.save
redirect_to @job, :notice => 'Job was successfully created.'
else
render :action => "new"
end
end
def update
@job = Job.find(params[:id])
if @job.update_attributes(params[:job])
redirect_to @job, :notice => 'Job was successfully updated.'
else
render :action => "edit"
end
end
end
私のフォーム:
<%= form_for(@job) do |f| %>
#...
<%= f.submit %>
検証エラーページでは、これがタグのレンダリング内容です(このジョブがデータベースに挿入されることはなく、元々新しいジョブを作成しようとしていましたが):
<form accept-charset="UTF-8" action="/jobs/10" class="edit_job" id="edit_job_10" method="post">
更新-これが私のroutes.rbとnew.html.erbです:
Myapp::Application.routes.draw do
resources :jobs
end
そして私の新しい見解はこれを持っています:
<h2>New Job</h2>
<%= render 'form' %>
編集は同じですrender 'form'