首页 > 解决方案 > 在 Ruby 中处理多个参数

问题描述

我有一个场景,我有一个表单,其中添加了新员工并删除了相同表单中保存的员工。虽然添加它很好,但是当我们删除一条记录并单击保存时,它会在另一个页面中引发验证错误。我试图在以下同一页面中阻止是我的控制器方法:

def check_params
  #raise
  return if params[:employee].present? 
  flash[:alert] = 'Please fill in form before submitting.'
  redirect_to edit_employee_url
end

我尝试添加

return if params[:employee].present? && params[:employee][:emp_attributes]["0"]["_destroy"] != "1"

但仅适用于一个员工记录,如果我们有多个记录,则不会。

以下是通过raise捕获的参数。

params => "✓", "_method"=>"patch", "authenticity_token"=>"AAABBBVC==", "employee"=>{"emp_attributes"=>{"0"=>{"_destroy"=> "1", "name"=>"test", "start_day_of_the_week"=>"Monday", "sw_id"=>"2"}, "1"=>​​{"name"=>"test2", "start_day_of_the_week" =>"星期一", "sw_id"=>"3"}}}, "form_step"=>"2", "commit"=>"保存并继续", "view_context"=>:empdet, "controller"= >“employees”、“action”=>“update”、“id”=>“29955”} 允许:假>

params[:employee] => {"0"=>{"_destroy"=>"1", "name"=>"test", "start_day_of_the_week"=>"Monday", "sw_id"=>"2"} , "1"=>​​{"name"=>"test2", "start_day_of_the_week"=>"Monday", "sw_id"=>"3"}}} 允许:false>

标签: ruby-on-rails

解决方案


尝试这个:

return if params[:employee].present? &&
params[:employee][:emp_attributes].values.any?{|m| m.key?("_destroy")}

推荐阅读