我最近遇到了一些問題,因爲服務內容基於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