Вы можете попытаться приблизиться к вещам немного более ненавязчиво. Я бы порекомендовал заменить ваш link_to
звонок чем-то вроде:
<%= link_to "Search", "#", :id => "search_geocode", :"data-href" => my_controller_geocode_path %>
Это практически идентично тому, что у вас уже есть, за исключением того, что оно включает уникальный идентификатор, а также путь к контроллеру / геокоду в атрибуте data-href
. Это поможет вам немного отделить рубин и JavaScript.
Тогда в вашем application.js
(или где-то похожем):
$('#search_geocode').live('click', function(event){
event.preventDefault();
$.post($(this).attr('data-href') + "?address=" + $('#address').val(), function(data){} );
});
Это эффективно делает привязку прослушивателя событий click
к вашей кнопке поиска, которая отправляет адрес по URL-адресу или пути, указанному в атрибуте data-href
вашей поисковой ссылки.
Я также заметил, что в вашем коде вы устанавливаете id
адреса источника в ruby. Если этот атрибут id
необходимо изменить в зависимости от условий шаблона страницы, вы можете расширить мой пример, добавив еще один параметр data-
к своей ссылке. Например:
<%= link_to "Search", "#", :id => "search_geocode", :"data-href" => my_controller_geocode_path, :"data-address-id" => address_helper_id %>
И снова, в application.js
, заменяя выше что-то вроде:
$('#search_geocode').live('click', function(event){
event.preventDefault();
$.post($(this).attr('data-href') + "?address=" + $($(this).attr('data-address-id')).val(), function(data){} );
});