【问题标题】:Rails controller getting params named for the controller route with a JSON query?Rails 控制器通过 JSON 查询获取以控制器路由命名的参数?
【发布时间】:2016-12-11 23:46:53
【问题描述】:

我正在运行 Rails 5.0.0.1,并且有一个名为 Voice::NumbersController 的控制器,可以通过如下路径访问:

  scope '/api' do
    namespace :v1 do
      namespace :voice do
        resources :numbers
      end
    end
  end

我想要一个可选参数“数字”。出于某种原因,当我在请求中有 Content-Type: application/json 时,对 /api/v1/voice/numbers 的不带参数的 GET 请求会得到 params[:numbers] 传递给它。

这是因为带有 body 的 GET 会混淆事物吗?如果我在正文中放入一些内容(即“hello”:5),我会得到以下信息:

  Parameters: {"_json"=>"hello: 5", "number"=>{"_json"=>"hello: 5"}}

这对我来说没有多大意义 - 设置“_json”而不是“number”似乎是合理的。

有没有办法禁用自动包含“数字”参数?

【问题讨论】:

    标签: ruby-on-rails json


    【解决方案1】:

    这是parameter wrapping

    我相信您可以在config/initializers/wrap_parameters.rb 中禁用它,如下所示:

    ActiveSupport.on_load(:action_controller) do
      wrap_parameters format: []
    end
    

    您也可以在每个控制器的基础上禁用它:

    class Voice::NumbersController < ApplicationController
      wrap_parameters false
      # ...
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多