我的表单在创建新作业时有效,但是当我提交表单并且它有验证错误(并尝试重新提交表单)时,它似乎转到了我的控制器中的更新方法(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'