我正在尝试使用此redirect_to
redirect_to :controller => :note_categories, :action => :destroy, :note_id => params[:id]
这是结果的网址
http://localhost:3000/note_categories/272?note_id=272
这是错误消息
Unknown action
No action responded to show. Actions: destroy
我重定向到note_categories destroy动作并传入note id的原因是,在destroy动作中,我发现所有与note相关的note_categories,在它们上运行一些代码,然后销毁它们。我知道这不是一个好方法,但我无法使用:dependent => :destroy因为我必须在我删除之前在note_category上运行的代码需要访问current_user,这在note_category模型中不会发生。
所以是的,有人可以告诉我在redirect_to中我做错了什么吗?谢谢你的阅读。
答案 0 :(得分:4)
redirect_to
方法本质上是Post/Redirect/Get(PRG)网页设计模式的Rails实现。它用于防止用户在提交表单后单击浏览器的“刷新”按钮而导致重复的表单提交。
典型的Rails用法就像创建对象一样:
new
action / HTTP GET)create
操作/ HTTP POST)redirect_to
视图或show
index
- 用于编辑对象:
edit
action / HTTP GET)update
action / HTTP PUT)redirect_to
视图或show
index
您无法直接重定向到destroy
操作,因为在RESTful Rails中,由于HTTP DELETE请求而打算调用它,并且在调用模板时不会呈现模板。 redirect_to
方法始终重定向到模板。
您没有向我们展示销毁笔记的代码,但我怀疑您尝试实现的内容可以使用前置过滤器并让控制器将当前用户传递给模型方法。