我有一個Parent
模型,它有Children
。如果刪除了某個Parent
的所有Children
,我也想自動刪除Parent
。Rails:在XHR內重定向
在非AJAX的情況下,在ChildrenController
我會做:
@parent = @child.parent
@child.destroy
if @parent.children.empty?
redirect_to :action => :destroy,
:controller => :parents,
:id => @parent.id
end
但是當請求XHR這是不可能的。重定向導致GET請求。
我能想到用AJAX做這件事的唯一方法是給響應RJS添加邏輯,使它創建一個link_to_remote
元素,「點擊」它,然後刪除它。看起來很醜陋。有沒有更好的辦法?
澄清
當我使用術語重定向,我的意思不是HTTP重定向。我的意思是,不是返回與銷燬Child
相關聯的RJS,我想在Parent
上執行destroy
,並返回與銷燬Parent相關聯的RJS。
我想通過XHR調用父消滅行爲。該解決方案是一個URL重定向。 – shmichael 2010-08-21 06:52:18
您不能在XHR控制器操作中執行重定向,但您可以呈現將爲您執行重定向的RJS。我以爲這是你的問題?您的控制器操作需要執行刪除操作,如果沒有更多項目:重定向。沒有? – nathanvda 2010-08-21 20:05:14
也許我誤用了術語重定向。 我想回應RJS是與銷燬'父'關聯的一個。即從'ChildrenController'的銷燬我想移動到'ParentsController'的銷燬,完全跳過'ChildrenController'的響應。 因此,在進程的任何階段都不應該發佈HTTP重定向。 – shmichael 2010-08-22 07:20:20