您可能想尝试更不引人注目地处理事情。我建议将您的 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 事件侦听器绑定到您的搜索按钮,该按钮将地址发布到搜索链接的data-href 属性中提供的url 或路径。
我还注意到,在您的代码中,您在 ruby 中设置了源地址的 id。如果此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){} );
});