首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在Rails 6中选择多个要删除的项目(通过复选框)

在Rails 6中,可以通过使用复选框来选择多个要删除的项目。以下是一种实现方式:

  1. 首先,在你的视图文件中,创建一个表单来显示项目列表和复选框。可以使用form_with方法来创建表单,并使用collection_check_boxes方法来生成复选框。假设你的项目模型为Project,你可以在视图文件中添加以下代码:
代码语言:txt
复制
<%= form_with(model: @projects, local: true) do |form| %>
  <% @projects.each do |project| %>
    <%= form.collection_check_boxes :selected_project_ids, [project], :id, :name %>
  <% end %>
  <%= form.submit "删除选中的项目" %>
<% end %>

上述代码中,@projects是一个包含所有项目的实例变量,selected_project_ids是一个数组,用于存储用户选择的项目的ID。

  1. 在你的控制器中,处理表单提交的数据。在你的控制器的相应动作中,你可以使用params方法来获取用户选择的项目ID。然后,你可以使用destroy方法来删除这些项目。以下是一个示例:
代码语言:txt
复制
def destroy_selected_projects
  selected_project_ids = params[:project][:selected_project_ids]
  Project.destroy(selected_project_ids)
  redirect_to projects_path, notice: "选中的项目已成功删除。"
end

上述代码中,destroy_selected_projects是一个自定义的控制器动作,用于处理表单提交。params[:project][:selected_project_ids]用于获取用户选择的项目ID数组。然后,使用Project.destroy方法来删除这些项目。

  1. 在你的路由文件中,定义一个路由来映射到控制器的相应动作。在config/routes.rb文件中,添加以下代码:
代码语言:txt
复制
resources :projects do
  delete :destroy_selected, on: :collection
end

上述代码中,resources :projects用于定义项目资源的标准路由。delete :destroy_selected用于定义一个自定义的路由,映射到控制器的destroy_selected_projects动作。

现在,当用户提交表单时,选中的项目将被删除,并重定向到项目列表页面。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Eclipse使用入门教程[通俗易懂]

Eclipse使用入门教程 说起java的IDE,朗朗上口的无非是Eclipse了,假若能熟练Eclipse,对于我们编写java程序会起到事半功倍的效果,大大提高我们工作效率。因此本篇博文,笔者只是针对刚刚入门java的新手,以便他们能尽快掌握Eclipse的使用。 1. 常用快捷键 这是使用工具的第一步,熟练使用快捷键对于我们编写程序会起到相当大帮助,所以这里笔者列出的快捷键建议大家必须都掌握。 Ctrl + 鼠标左键(类、方法、属性的变量名词):定位跟踪某变量声明或定义的位置 Ctrl + S:保存当前文件 Ctrl + X:剪切 Ctrl + C:复制 Ctrl + V:粘贴 Ctrl + D:删除当前行 Ctrl + F:查找/替换(当前编辑窗口) Ctrl + H:全局搜索 Ctrl + /:注释当前行或多行代码 Ctrl + Shift + C:注释当前行或多行代码 Ctrl + Shift + F:格式化当前代码 Ctrl + Shift + O:缺少的Import语句被加入,多余的Import语句被删除(先把光标定位到需导入包的类名上) Ctrl + Shift + S:保存所有文件 Ctrl + Shift + X:把当前选中的文本全部变为大写 Ctrl + Shift + Y:把当前选中的文本全部变为小写 Alt + /:代码智能提示 Alt + Shift + R:重命名(包括文件名、类名、方法名、变量名等等,非常好用) Alt + Shift + J:生成类或方法的注释 Alt + Shift + S:打开Source窗口(生成get、set方法,实现、覆盖接口或类的方法,很常用) Alt + Shift + D, J:如果有main方法入口,则以Debug方式执行代码 Alt + Shift + X, J:如果有main方法入口,则以Run方式执行代码

02
领券