gpt4 book ai didi

ruby-on-rails - Rails 表单创建在验证错误后提交更新

转载 作者:太空宇宙 更新时间:2023-11-03 16:32:34 24 4
gpt4 key购买 nike

我的表单在创建新作业时有效,但是当我提交表单时出现验证错误(并尝试重新提交表单),它似乎转到我的 Controller 中的更新方法(抛出 ActiveRecord::RecordNotFound 因为没有设置 ID)。

我的 Controller :

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' %>

Edit 具有相同的render 'form'

最佳答案

我设法找出问题所在。我在我的模型中调用了 update_attributes,这导致作业被保存(并在不久之后被删除)。

这使 form_for 认为该项目正在更新,并在尝试更新实际上不存在的内容时导致问题。我只是切换到使用不保存任何内容的 assign_attributes

关于ruby-on-rails - Rails 表单创建在验证错误后提交更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13319239/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com