Es posible que desee para tratar de abordar las cosas un poco más discretamente. Yo recomendaría la sustitución de su llamada link_to
con algo como:
<%= link_to "Search", "#", :id => "search_geocode", :"data-href" => my_controller_geocode_path %>
Ésta es prácticamente idéntica a lo que ya tiene, excepto que incluye un identificador único, y también el camino controlador/codificación geográfica en un atributo data-href
. Esto te ayudará a mantener tu ruby y javascript un poco más separados.
Luego, en su application.js
(o en algún lugar similar):
$('#search_geocode').live('click', function(event){
event.preventDefault();
$.post($(this).attr('data-href') + "?address=" + $('#address').val(), function(data){});
});
Lo que esto está haciendo efectivamente es vinculante para un oyente click
evento al botón de búsqueda, que los mensajes de la dirección de la URL o la ruta proporcionada en el data-href
atributo de su enlace de búsqueda.
I Observe también que en su código, que está configurando el id
de la dirección de origen en rubí. Si este atributo id
necesita cambiar en función de algún tipo de condición de plantilla de página, puede ampliar mi ejemplo agregando otro parámetro data-
a su enlace. Por ejemplo:
<%= link_to "Search", "#", :id => "search_geocode", :"data-href" => my_controller_geocode_path, :"data-address-id" => address_helper_id %>
Y de nuevo, en application.js
sustitución de más arriba con algo en la línea de:
$('#search_geocode').live('click', function(event){
event.preventDefault();
$.post($(this).attr('data-href') + "?address=" + $($(this).attr('data-address-id')).val(), function(data){});
});