【发布时间】:2011-02-01 02:20:27
【问题描述】:
我使用的是 Rails 2.3.8
我遇到了表单出错后呈现的操作的问题。
所以我有一个posts 控制器和常规相关操作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
这是视图中的表单
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 页面上出现错误(例如,将字段留空),则呈现的视图会提交到错误的位置。因此,如果我从new 开始并多次提交均未成功,我将依次通过new、create、edit、update 操作。所以行为是:
开始创建帖子:
操作:new
URI:/posts/new
渲染视图:new
提交成功到:show
提交失败到:create
第一次提交失败后:
操作:create
URI:/posts 不好?
渲染视图:new
成功提交到:index(这意味着表单正在提交到 update 操作,错误)
不成功的提交到:edit bad
第二次提交失败后:
操作:edit 糟糕,我应该无法从 new 到达这里!
URI:/posts/[id]
渲染视图:edit 糟糕,我应该无法从new 到达这里!
成功提交到:index通过更新
提交失败到:update
第三次及以后的不成功提交后:
操作:update 糟糕,我应该无法从new 到达这里!
网址:/posts/[id]
渲染视图:edit 糟糕,我应该无法从new 到达这里!
提交成功到:index
提交失败到:update
如果有人能指出我做错了什么,我将不胜感激。如果您需要任何其他信息,请询问。
非常感谢!
【问题讨论】:
标签: ruby-on-rails