在Rails 6中,可以通过使用复选框来选择多个要删除的项目。以下是一种实现方式:
form_with
方法来创建表单,并使用collection_check_boxes
方法来生成复选框。假设你的项目模型为Project
,你可以在视图文件中添加以下代码:<%= 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。
params
方法来获取用户选择的项目ID。然后,你可以使用destroy
方法来删除这些项目。以下是一个示例: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
方法来删除这些项目。
config/routes.rb
文件中,添加以下代码:resources :projects do
delete :destroy_selected, on: :collection
end
上述代码中,resources :projects
用于定义项目资源的标准路由。delete :destroy_selected
用于定义一个自定义的路由,映射到控制器的destroy_selected_projects
动作。
现在,当用户提交表单时,选中的项目将被删除,并重定向到项目列表页面。
领取专属 10元无门槛券
手把手带您无忧上云