我最近遇到了一些问题,因为服务内容基于current_page而导致对象无法保存?方法。我使用的是近脚手架控制器:Rails 3 - 渲染:模板与current_page不一样吗?
def create
@topic = Topics.new(params[:topic])
respond_to do |format|
if @topic.save
format.html { redirect_to(topic_links_path(@topic), :notice => "New Topic Created") }
else
format.html { render "new" }
format.xml { render :xml => @topic.errors, :status => :unprocessable_entity }
end
end
末
的问题是,如果验证失败,就被逮住,然后简单地呈现我的新模板。您不在new_topic_path路由位置,导致我的视图助手提供错误的内容。
如果我@topic确实无法保存,我可以做一个redirect_to的,但我不知道如何维护和重定向后显示错误?
无论如何,寻找一些优雅的方式来做到这一点的帮助。
编辑为澄清:
基本上,我在做什么是基于服务的CURRENT_PAGE的不同的工具栏。所以dev.app:3000/topic/new有不同于dev.app:3000/topic的工具栏。
对于我的控制器,如果@topic未能保存,它将呈现新的动作,但仍会转到dev.app:3000/topics路径而不是保留在/ topics/new路径上,因此显示错误的工具栏。
大, !这是我需要的。万分感谢。 – Kombo 2011-06-07 20:49:12
绝对同意这个答案,但问题让我好奇,为什么它不呈现在/新路径中的HTML?您显然可以重定向到新的_ * _路径,但会丢失错误信息。 – 2011-06-07 20:51:31
因为在'new'观点的帖子,其按照铁路的REST约定'create'行动的形式 - 使用相同的URL'index'(但它是一个POST而不是GET)。 – smathy 2011-06-07 21:00:19