我正在为控制器操作编写测试,出于某种原因,params
在到达控制器操作时正在被擦除。这就是我所拥有的:
it 'records the event propertly' do
post :create, params
end
和控制器操作:
def create
# PARAMS IS NIL HERE
params = params.permit(:data)
headers['Access-Control-Allow-Origin'] = '*'
## DO STUFF #
render status: :ok
end
因此问题params
在行动中为零。但是,request.params是正确的。
我在该操作之前添加了before_filter
只是为了查看params哈希是否可用而且确实如此。所以有一些关于它进入该行动导致params擦拭的东西。
路线:resources :events, only: :create
答案 0 :(得分:0)
问题最终是因为即使我将binding.pry放在控制器操作的顶部,在控制器中的任何地方都有params = params.permit(:data)
导致params为nil
。将该行分配给与params
不同的变量名称可以解决问题。