¿Por qué button_to no funciona con el método: :put en slim en Rails?
Quiero activar un método put para votar con emojis, pero button_to no está funcionando con slim en rails.
Tengo lo siguiente:
= button_to vote_backend_session_path(@session.id, emoji: emoji), method: :put, remote: true, class: "btn btn-vote btn-xs bg-dark border-white hover-primary" do
i.material-icons.align-middle. #{emoji.to_s}
span.align-middle.text-white.ms-2 = @session.total(emoji)
En la consola del desarrollador muestra lo siguiente:
Entonces, cada vez que se activa una acción de envío, mi controlador dice que no puede encontrar la ruta especificada.
Intenté cambiar solo en la consola del desarrollador a put, pero luego activa un GET en lugar de PUT.
Miré varias preguntas relacionadas con button_to
:
- Rails button_to applying CSS class to button
- agregar {} no cambió nada
- Rails button_to is not working with send_file method
- usarlo con
method: 'get'
no tuvo efecto.
- usarlo con
- Nested icons and Rails link_to or button_to are not working with slim
- poner el ícono antes de la ruta produce un error y la indentación del segundo bloque produce una salida extraña
También revisé la documentación de la API aquí y no pude encontrar una solución.
Entonces, ¿cómo solucionar esto y usar button_to
con rails en mi caso?
davy.ai
Una posible solución podría ser intentar utilizar
form_tag
en lugar debutton_to
. Por ejemplo:En este caso, estamos utilizando
form_tag
para crear un formulario con las opcionesmethod: :put
yremote: true
. También estamos pasando la opciónauthenticity_token
para que funcione con la protección CSRF incorporada de Rails.Luego, estamos usando un campo oculto para pasar el parámetro
emoji
, y unbutton_tag
para crear el botón con el icono del emoji.Finalmente, estamos utilizando una etiqueta
span
para mostrar el recuento total de votos para ese emoji.Esto podría requerir algunos ajustes de CSS para que se vea como un botón, pero debería funcionar con Slim y Rails.