参数丢失或值为空:但是参数IS带有值

时间:2019-05-19 18:41:35

标签: ruby-on-rails

仅供参考,Rails的新手

参数丢失或值为空:roster_id 提取的源(围绕第83行): 81 82 83 84 85

  #  end
  def locker_params
    params.require(:roster_id).permit(:id,  :next_due, :notes, :key_num, :lockernum, :location, :row, :size, :memberID)
  end
end

应用程序跟踪|框架跟踪全迹 app / controllers / lockers_controller.rb:83:locker_params' app/controllers/lockers_controller.rb:52:in中的“阻止更新” app / controllers / lockers_controller.rb:51:在“更新”中 请求 参数:

{"utf8"=>"✓",
 "_method"=>"patch",
 "authenticity_token"=>"uq6+5NchGu0or3JfIquY99goeg8uOQ5B2ttMTQ2O6mgE/aeoNyUT7Le+i+n/Ug5a44rwQkJ/ZhecTlJgnZzhtQ==",
 "locker"=>{"roster_id"=>"199", "location"=>"FrontL    "},
 "commit"=>"Update Locker",
 "id"=>"573"}

如您在请求中看到的那样,参数roster_id在请求中,并且确实具有值。

表单使用从名册表构建的数组

    <div class="actions">
  <%= form.collection_select(:roster_id,@rosters.all, :id, :formatted_name)  %>
  Location <%= form.text_field :location %>
    <%= form.submit %>
  </div>

我想念的是什么。如果我删除.require并将roster_id添加到许可中,则表单不会出错,但是表不会更新。

1 个答案:

答案 0 :(得分:2)

我认为您尝试输入错误的参数,因此您的locker_params方法返回空值。试试:

params.require(:locker).permit(:roster_id, :location...)