【发布时间】:2009-12-04 04:32:28
【问题描述】:
我正在开发一个允许用户选择多个条目的应用程序。一旦选择了这些条目,用户就可以选择将它们全部删除。单击删除按钮时(在选择一个或多个条目后),将显示一个模式对话框窗口,显示用户使用确认按钮选择的条目。
目前,以上所有操作都是在客户端使用 jQuery 完成的。我已设法将其全部设置好,以便确认按钮(使用:method => :delete 的link_to)具有/entries/12,13,16,17 的URL,其中数字代表用户选择的条目的ID。我也尝试过发送格式为/entries/[1,2,3,4] 的网址,但没有成功。我感觉我没有发送 real 数组。
这是我的删除方法,当使用一个 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 的控制器方法中唯一缺少的部分。
【问题讨论】:
标签: jquery ruby-on-rails arrays