我正在尝试遵循 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
操作,然后崩溃,因为它没有任何数据要显示。
如果我在@deck = d
上面添加render
,它可以工作,但 url 仍然是show
操作。
如果我的验证失败,我怎样才能保持在同一个 URL 上并显示我的错误消息?“更改 URL 但呈现相同页面”行为是否被接受为有效?
谢谢 !
如果您有兴趣查看其余代码,请访问:https ://github.com/cosmo0/TeachMTG/tree/remodel-decks