Rails 嵌套强参数,如何使用?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Rails 嵌套强参数,如何使用?相关的知识,希望对你有一定的参考价值。

我正在使用Jquery dataTables。这个库是在特定的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

当我想添加新的任务时,我的params看起来像:

{"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 如果你想让代码在参数缺失时引发。

以上是关于Rails 嵌套强参数,如何使用?的主要内容,如果未能解决你的问题,请参考以下文章

Rails 强参数 - 允许在数组中进行深度嵌套哈希

如何允许具有强参数的数组

我的 rails 嵌套模型无法识别 _destroy 属性

以下代码片段是不是容易受到 Rails 5 中 SQL 注入的影响?

rails - 设计强参数总是不允许注册

嵌套 Rails 模型 - 创建时忽略 child_index