我有一个控制器:
class ThingController < ActionController
respond_to :json
def create
puts "CREATE " + params.inspect
end
end
和测试:
require "spec_helper"
describe "/thing" do
context "create" do
it "should get params" do
params = {"a" => "b", "c" => ["d"], "e" => [], "f"=>"",
"g"=>nil, , "controller" => "NOPE", "action" => "NOPE"}
post uri, params
end
end
end
运行时,会记录以下内容:
CREATE {"a"=>"b", "c"=>["d"], "action"=>"create", "controller"=>"thing"}
我的问题是:
e
去了哪里?我希望它反序列化为一个空数组,而不是一无所有。action
和controller
参数混合在一起? Aren的身体和导轨内部是完全分开的问题吗?action
和controller
JSON字段被覆盖了。我如何访问这些?我是Rails的新手,但我做了很多Django。
答案 0 :(得分:0)
rails中间件将添加动作和控制器参数,因此如果您仍想访问自定义值,则必须将它们放在嵌套哈希中。
尝试将format: 'json'
添加到测试中的参数中。这将发送一个不同的内容类型标题,并可能有助于正确序列化params以保持e param。
答案 1 :(得分:0)
此问题有两个部分:您需要确保将参数作为JSON发送,并且还要将它们解释为JSON。
基本上,你必须