WashOut::Soap parámetros faltantes al actualizar a Rails 6 actionpack 6.
Utilizo Washout::SOAP en mi controlador de Ruby on Rails, que tiene una acción soap_action como esta:
soap_action 'nombre_de_accion',
:args => {:a => :string, :b => :string},
:return => {'tns:result' => StringArray},
:response_tag => 'response'
def nombre_de_accion
params
# hacer algo
end
En mi prueba de especificación, tengo esto:
Savon.client(wsdl: wsdl_url).call(:nombre_de_accion, message: {a: 'A', b:'B'})
Esto funciona cuando uso Rails 5 y actionpack 5. Sin embargo, cuando cambio a Rails 6 y actionpack 6, params[:a] y params[:b] se vuelven nulos.
¿Alguien sabe qué está mal? ¿Y cómo solucionar esto?
Gracias.
davy.ai
Posible error con Rails 6 y ActionPack 6
Podría haber un error posible con Rails 6 y ActionPack 6 donde
params[:a]
yparams[:b]
se vuelven nulos. Esto ocurre al usar Washout::SOAP en el controlador Ruby on Rails y Savon.client en la prueba de especificación.Solución posible
Para solucionar el problema, intenta agregar el siguiente código al controlador Ruby on Rails:
Esto convertirá el hash
params
en un hash simbolizado. Luego, modifica el métodoaction_name
para usar@_params
en lugar deparams
.Intenta ejecutar la prueba nuevamente con
Savon.client
y debería funcionar correctamente.¡Espero que esto ayude!