您可能想尝试更不引人注目地处理事情。我建议将您的link_to
电话替换为以下内容:
<%= link_to "Search", "#", :id => "search_geocode", :"data-href" => my_controller_geocode_path %>
这实际上与您已经拥有的相同,除了它包含一个唯一的 id 以及data-href
属性中的控制器/地理编码路径。这将有助于让您的 ruby 和 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){} );
});