gpt4 book ai didi

ruby-on-rails - Rails 表单重定向用于新建/创建、编辑/更新

转载 作者:行者123 更新时间:2023-12-04 06:07:27 25 4
gpt4 key购买 nike

我正在使用 Rails 2.3.8

我在表单中出现错误后呈现的操作存在问题。

所以我有一个 posts Controller 和常规相关操作,index , new , create , edit , update , 和 show .

以下是 PostsController 中的表单操作:

def new
@post = Post.new
# other setup
end

def create
if request.post?
@post= Post.new(params[:post])
# other setup for save
if @post.save
flash[:notice] = 'Post was successfully created.'
redirect_to campaign_path(@post, :redirect => "create")
else
render :action => 'new'
end
end
end

def edit
@post = Post.find(params[:id])
# other setup
end


def update
# setup for save
if @campaign.update_attributes(params[:post])
flash[:notice] = 'Your post was successfully updated.'
redirect_to :action=> "index"
else
render :action => "edit"
end
end

这是 View 中的表格
new.html.erb :
<% form_for(@post, :html => {:multipart => true}) do |f| %>
<%= f.error_messages %>
# Form fields and stuff
<%= f.submit "Create New Post" %>
<% end %>
edit.html.erb :
<% form_for(@post, :html => {:multipart => true}) do |f| %>
<%= f.error_messages %>
# Form fields and stuff
<%= f.submit "Update This Post" %>
<% end %>

我的问题是 : 如果我在 new页面,我犯了一些错误(例如,将字段留空),呈现的 View 提交到错误的位置。所以如果我从 new 开始并且提交了很多次都不成功,我依次通过 new ,然后 create ,然后 edit ,然后 update行动。所以行为是:

开始创建帖子:

行动: new网址: /posts/new渲染 View : new提交成功到: show提交失败到: create
第一次提交失败后:

行动: create网址: /posts 坏的?
渲染 View : new提交成功到: index (这意味着表单正在提交 update 操作, 错误 )
提交失败到: edit

第二次提交失败后:

行动: edit ,我应该无法从 new 到达这里!
网址: /posts/[id]渲染 View : edit ,我应该无法从 new 到达这里!
提交成功到: index通过更新
提交失败到: update
在第三次和随后的不成功提交之后:

行动: update ,我应该无法从 new 到达这里!
网址: /posts/[id]渲染 View : edit ,我应该无法从 new 到达这里!
提交成功到: index提交失败到: update
如果有人能指出我做错了什么,我将不胜感激。如果您需要任何其他信息,请询问。

非常感谢!

最佳答案

问题可能是您用于创建帖子的代码(# setup for save)。您可能正在设置@post.id,这导致您的新表单提交更新而不是创建。 form_for 助手检查记录是否是新的,如果是新的,则提交创建,如果已存在,则提交更新。

注意:你也不需要检查request.post?在您的创建操作上。创建操作应始终是发布请求。

关于ruby-on-rails - Rails 表单重定向用于新建/创建、编辑/更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4858255/

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