ruby-on-rails - Rails 嵌套强参数,如何使用?
问题描述
我正在使用 Jquery 数据表。该库在特定的 json 结构上运行,例如:
{"data"=>{"209"=>{"order"=>"", "name"=>"dssdbs", "task_deadline"=>"", "task_status"=>"Nie przypisano", "board_id"=>"17", "user_id"=>"2", "task_group"=>"WWW", "assigned-many-count"=>"0"}}, "id"=>"209"}
问题是,我怎样才能把它变成强参数?现在我正在以非常糟糕的方式在控制器中操作我的参数:
task_params = params[:data][params[:id]]
@task = Test.find(params[:id]
@task.order = task_params[:order]
@task.name = task_params[:name]
@task.task_deadline = task_params[:deadline]
@task.task_status = task_params[:task_status]
@task.board_id = task_params[:board_id]
@task.user_id = task_params[:user_id]
@task.task_group = task_params[:task_group]
@task.save
当我想添加新任务时,我的参数看起来像:
{"data"=>{"0"=>{"order"=>"", "name"=>"dssdbs", "task_deadline"=>"", "task_status"=>"Nie przypisano", "board_id"=>"17", "user_id"=>"2", "task_group"=>"WWW", "assigned-many-count"=>"0"}}}
如您所见,我使用的是 0 而不是 ID。
有没有一些干净又好的方法在这里使用强参数?一切正常,但它与 DRY 方法完全不同。
谢谢你的任何建议
解决方案
def task_params
params.fetch(:data)
.fetch(params[:id])
.permit(
:name,
:order
# ...
)
end
fetch
require
如果您希望在缺少参数的情况下引发代码,则可以替换为。
推荐阅读
- html - 使bulma列占据完整的垂直空间
- python - 将 Pandas 的“DOB”列转换为“Age”,但它具有 NaT/空值,因此会引发错误“NaTType 不支持 strftime”
- c# - launchSettings.json 和 appSettings.json 是如何工作的?
- angular - Angular 测试在初始化之前无法访问 Service
- intellij-idea - 文件观察器在 Intellij 中不适用于 isort 和 autoflake 组合
- java - Java同步块进出的内存屏障
- c# - DataGridColumnHeader 内的弹出窗口中的奇怪事件行为
- shortest-path - 是否有一些算法可以在遗传学和育种的背景下找到最短路径?
- testing - 如何测试包裹在 Promise 中的 FileReader?
- python - 减少神经网络损失的问题