ruby-on-rails - 参数丢失或值为空:但参数 IS 有一个值
问题描述
仅供参考,对 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
应用程序跟踪 | 框架跟踪 | Full Trace app/controllers/lockers_controller.rb:83:in locker_params'
app/controllers/lockers_controller.rb:52:in
block in update' app/controllers/lockers_controller.rb:51:in `update' 请求参数:
{"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 添加到许可证中,则表单不会出错,但表不会更新。
解决方案
我认为您试图要求错误的参数,因此您的locker_params
方法返回空。尝试:
params.require(:locker).permit(:roster_id, :location...)
推荐阅读
- pip - 在 Mac OS 10.14.1 上安装 MySQL-Python 时出现问题
- git - 使用别名简化克隆
- spring - 使用 BeanDefinitionRegistryPostProcessor 创建 N 个 bean
- elasticsearch - elasticsearch中具有动态字段的过滤器
- r - 嵌入在 R 包中的闪亮应用和数据
- php - Laravel Eloquent 模型复杂查询
- amazon-web-services - AWS - 托管 Web 应用程序的客户端(HTML、CSS、JS、图像文件)的推荐方式是什么?
- cluster-analysis - 在给定地图中对消防队、警察、救护车进行聚类时使用的最佳聚类算法是什么?
- java - 为什么 ENUM 不能在 H2 的子查询中工作?
- python - Python3 命令行和 argparse 问题