/ / Cómo hacer una llamada AJAX usando Rails en una Acción que no sea Crear o Destruir - jquery, sql, ruby-on-rails, ruby, ajax

Cómo hacer una llamada AJAX usando Rails en una Acción que no sea Crear o Destruir - jquery, sql, ruby-on-rails, ruby, ajax

Quiero crear una llamada AJAX en una acción, vamos allámelo, para que un campo en mi base de datos se actualice con un clic. Esta es una pregunta de seguimiento de una respuesta anterior que recibí ayer, así que tengan paciencia porque tengo bastante poca experiencia.

<%= button_to "Click me!", :action => "some_action", :remote => true %>
Which will send an AJAX request back to the server, in which you need to handle in your controller

def some_actoin
// Update your database here
respond_to do |format|
format.js { render "somepartial" }
end
end

¿Esta respuesta esencialmente significa que necesito crear una ruta asociada con la definición some_action? Si es así, ¿qué formato debe tomar esta ruta.

No quiero que el usuario se aleje de la página, solo quiero actualizar un div en la página actual.

Respuestas

1 para la respuesta № 1

Tienes un buen comienzo. Cuando se hace clic en ese botón, el servidor enviará una solicitud HTTP a ese controlador / some_action. Llegará a ese método de acción donde debe guardar en la base de datos. A partir de ahí responderá con javascript (de ahí el formato.js). El archivo javascript con el que está respondiendo (asumiendo que está utilizando jquery y no un prototipo) se llamará some_action.js.erb. Dentro de ese archivo, usted pone todas las llamadas a la función jquery, etc., que desea que ocurran una vez que la solicitud ajax haya regresado.

EDITAR:

Para aclarar aún más con las rutas. Necesitas poder acceder al controlador / some_action de manera normal. Esto significa que debe haber una ruta definida:

match "controller/some_action" => "controller#some_action"

sin embargo, no necesita hacer nada extra para decirle a Rails que es una ruta remota.


1 para la respuesta № 2

Esencialmente, sí, deberá agregar la ruta al archivo route.rb.

Por lo tanto, si su controlador se llama posts_controller y desea marcar una publicación específica como se ve:

map.resources :posts, :member => {:seen => :post}

Esto agregará una ruta a / posts / 1 / seen (donde "1" es el ID de la publicación para realizar la acción vista)