我正在嘗試遵循RailsTutorial指南,而是通過自己的應用程序來代替。我在第7節遇到了問題。編輯後保留在同一頁面
我的控制器:
def update
d = Deck.find(params[:id])
d.title = params[:deck][:title]
d.slug = params[:deck][:slug]
d.category = params[:deck][:category]
if d.save
redirect_to deck_path(d), notice: "Deck saved successfully"
else
render :edit
end
end
我知道這是非常,從良好的代碼很遠,但以後我會重構它(如果你有一個建議,我所有的耳朵,但我用Rails 3中,所以我猜Rails 4的強大參數已經出來)。
問題是當d.save
不起作用(由於驗證),與render :edit
。
現在,當我輸入無效數據時,它會嘗試重定向到show
操作,並且因爲它沒有任何要顯示的數據而崩潰。
如果我在render
之上添加@deck = d
,它可以工作,但url仍然是show
操作。
如果我的驗證失敗,我該如何留在相同的URL並顯示我的錯誤消息? 「更改網址但呈現相同頁面」行爲被接受爲有效嗎?
謝謝!
如果你有興趣看代碼的其餘部分,它在這裏:https://github.com/cosmo0/TeachMTG/tree/remodel-decks
是的,我忘記了考慮http動詞。我現在明白了這種行爲。謝謝 ! – thomasb