es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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:

enter image description here

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:

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?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Una posible solución podría ser intentar utilizar form_tag en lugar de button_to. Por ejemplo:

    = form_tag vote_backend_session_path(@session.id), method: :put, remote: true, class: "btn btn-vote btn-xs bg-dark border-white hover-primary", authenticity_token: true do
      = hidden_field_tag :emoji, emoji
      = button_tag class: "material-icons align-middle" do
        = emoji.to_s
      span.align-middle.text-white.ms-2 = @session.total(emoji)
    

    En este caso, estamos utilizando form_tag para crear un formulario con las opciones method: :put y remote: true. También estamos pasando la opción authenticity_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 un button_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.

Comments are closed.