2011-06-26 59 views
1

我的應用程序有一堆組織。每個組織都允許用戶加入/離開組織。如果最後一個人離開組織,組織會自動銷燬。rails3 + jquery - 根據請求來源的不同,ajax請求的行爲不同

我想通過ajax處理加入/離開請求。加入/離開可以發生在兩個地方:列出所有組織的索引視圖和描述特定組織的展示視圖。

問題是,我希望我的leave.js.erb文件中的邏輯根據點擊的離開按鈕的位置而不同。如果離開請求來自show view(並假設這破壞了組織),那麼我希望用戶被重定向到索引視圖。如果離開請求來自索引視圖(並假設這會破壞組織),我想只是在索引視圖中刪除網絡的html。

達到此目的的最簡潔方法是什麼?我可以通過傳遞一個額外的參數給包含「source」的leave請求並在我的控制器邏輯/ leave.js.erb文件中使用這個「source」來思考迂迴的方法。不知道這是否是最好的方法。另外,如果這是推薦的方式,那麼在渲染離開按鈕時如何獲得「源」?

謝謝。

回答

0

確定你使用更好的查詢請求的來源:

request.referer 
在控制器

+0

我不認爲這是一個好主意,因爲大量的瀏覽器不會發送引用者。 – Peder

+0

@Peder:你能告訴我哪個? – apneadiving

+1

例如:「由於隱私問題,某些用戶可能不希望與網站共享該信息,Chrome瀏覽器擴展通過向網頁上的每個鏈接添加rel = noreferrer來阻止引薦網站頭向網站的傳輸。」 https://chrome.google.com/webstore/detail/dkpkjedlegmelkogpgamcaemgbanohip – Peder

0

最簡潔的方式IMO將有兩個動作,index_leave和show_leave,因爲流程是不同的。這兩個操作應該在用戶模型上調用稱爲leave_organization的模型方法,以便代碼保持DRY。

我想你已經試過只有一個動作而不是兩個,因爲你正在考慮將API作爲數據存儲API而不是應用程序控制器API。如果您想將您的Web服務器用作數據存儲,那麼您需要在客戶端實現控制器邏輯(即,您不應該依賴於控制器邏輯的leave.js.erb文件)。