Closed jerosalazar closed 5 years ago
primero tienes que determinar dónde está el problema:
ctx.params
(que puede ser en el path definido para esa acción)Ahora, por el tipo de argumentos que estás entregando (fromId
y toId
), estás efectivamente usándolos como path params? Podrías decir cómo es la ruta para crear nuevo mensaje? (el path configurado para la ruta me refiero)
Lo que tengo en las rutas es lo siguiente:
toId
, fromId
no es necesario en verdad porque lo puedo sacar de currentUser más adelante):console.log(ctx.params)
esto me arroja vacío ({}
). En la linea 72 originalmente tenía findById(ctx.params.toId)
, pero lo cambié por el id de un usuario fijo para descartar la primera opción que dijo (de esta forma "funciona" ya que puedo mandarle un mensaje al usuario id: 44):El segundo parámetro de ctx.router.url
y ctx.params
se refieren a path params únicamente (cosas como /ngos/:id
). Al menos en tu get de new-message no pareces tener un path param llamado toId
, que es lo que estás entregando para generar la ruta en el 1er trozo de código… tienes efectivamente en la ruta un path param llamado así? pues sino no es posible que esto te funcione correctamente. En una de esas lo que estás buscando es entregarlo como query param?
Tienes que tener bien presente que:
ctx.router.url
soporta dos opciones: o le entregas varios argumentos (que espera sean números o strings) y reemplazará cada placeholder en la ruta en el mismo orden, o bien le entregas un objeto, que utilizará para usar cada key del objeto como un reemplazo del placeholder del mismo nombre. Entonces, si le entregas un objeto {toId: 1}
, li que buscará es un path param llamado toId
y lo reemplazará por 1: /something/:toId/else
=> /something/1/else
Muchas gracias! Terminé cambiando la ruta messages/:toId/new
para que obtenga el párametro del id de esa forma
pero por si acaso, usar query params tb puede ser válido, y a veces conveniente, si es que el dato no es algo que tenga sentido en el path mismo
Creé un nuevo modelo para hacer mis mensajes, en el que (en simples palabras) tengo los atributos fromUser, toUser y body. Luego de crear el modelo y la tabla en la bdd, creé las rutas y mi problema empieza aquí: cuando intento acceder a cualquier ruta de mensajes, pierdo los ctx.params.
Por ejemplo, si me encuentro en el show de un usuario X, y defino
sendMessagePath: ctx.router.url('new-message', {fromId, toId})
, al redireccionarme a la vista del mensaje nuevo, pierdo los parámetros de fromId y toId (console.log(ctx.params)
arroja{}
). Revisé bastantes veces la sintaxis, así que creo no tener problemas ahí. Pero quizás me haya faltado definir algo en el archivo de routes o hay algún detalle que olvidé.¿Alguna idea de que podría ser?