我正在研究一個允許用戶選擇多個條目的應用程序。一旦選擇了這些條目,用戶可以選擇全部刪除它們。當點擊刪除按鈕(在選擇一個或多個條目後)時,會顯示一個模式對話窗口,顯示用戶用確認按鈕選擇的條目。在軌道中刪除多條記錄
目前,以上所有內容都是在客戶端上使用jQuery完成的。我已設法完成所有設置,以便確認按鈕(使用:method => :delete
的link_to
)的URL爲/entries/12,13,16,17
,其中數字表示用戶所選條目的ID。我也試着發送格式爲/entries/[1,2,3,4]
的網址,但沒有運氣。我有一種感覺,我不是發送真實陣列。
這裏是我的刪除方法,當使用一個ID,其工作完全正常(即/entries/1
),並且將有希望繼續與一個ID的工作:
def destroy
@entry = current_user.entries.find(params[:id])
@entry.destroy
respond_to do |format|
format.html { redirect_to(entries_url) }
format.xml { head :ok }
end
end
當我發送多個ID的(在格式1,2,3,4,5
),只有第一個條目被刪除,而其餘條目保持不變。這裏是我的WEBrick日誌看起來像表演動作後:
Processing EntriesController#destroy (for 127.0.0.1 at 2009-12-03 23:07:24) [DELETE]
Parameters: {"action"=>"destroy", "_method"=>"delete", "id"=>"19,22", "controller"=>"entries"}
User Load (0.3ms) SELECT * FROM "users" WHERE ("users"."id" = '2') LIMIT 1
User Update (0.3ms) UPDATE "users" SET "updated_at" = '2009-12-04 04:07:24', "last_request_at" = '2009-12-04 04:07:24' WHERE "id" = 2
Entry Load (0.2ms) SELECT * FROM "entries" WHERE ("entries"."id" = 19 AND ("entries".user_id = 2))
Tagging Load (0.4ms) SELECT * FROM "taggings" WHERE ("taggings".taggable_id = 19 AND "taggings".taggable_type = 'Entry' AND (taggings.context = 'tags'))
Tag Load (0.2ms) SELECT * FROM "tags" WHERE ("tags"."id" IN (22,23,24,29))
Tagging Destroy (0.2ms) DELETE FROM "taggings" WHERE "id" = 66
Tagging Destroy (0.1ms) DELETE FROM "taggings" WHERE "id" = 67
Tagging Destroy (0.0ms) DELETE FROM "taggings" WHERE "id" = 68
Tagging Destroy (0.1ms) DELETE FROM "taggings" WHERE "id" = 69
Tagging Load (0.1ms) SELECT * FROM "taggings" WHERE ("taggings".taggable_id = 19 AND "taggings".taggable_type = 'Entry')
Entry Destroy (0.1ms) DELETE FROM "entries" WHERE "id" = 19
Entry Load (0.5ms) SELECT * FROM "entries" WHERE ("entries".user_id = 2)
Redirected to http://localhost:3000/entries
正如你所看到的,這些ID發送("id"=>"19,22"
),但只有第一個項目被裝載。之後,其關聯的標記將被刪除(我正在使用acts_as_taggable_on
插件)。然後,第一個條目(id => 19
)被銷燬,用戶被重定向回到條目列表頁面。
應該做的是對每個傳遞的id重複該過程(重定向)。我很困惑,因爲RoRs docs狀態:
ID - 可以是一個整數或 整數數組。
我在做什麼錯?我覺得我好親近,我可以品嚐它!對我來說,獲得所有jQuery的工作是一個巨大的勝利,所以現在我知道控制器方法中處理多個id的唯一缺失。
任何幫助將不勝感激!
這打破了RESTful約定,應該放在另一個操作中。 – bensie 2009-12-04 05:01:36