我想在我的rails应用程序中进行就地搜索.
我使用了button_to_remote和原型,但现在我正在使用JQuery,所以我改为link_to.
这是我的代码:
我使用了button_to_remote和原型,但现在我正在使用JQuery,所以我改为link_to.
这是我的代码:
<%= link_to "Search",{:action => "geocode",:with => "'address='+$('#{address_helper_id}').value"},:method => :post,:remote => true %>
我想将地址文本字段传递给我的控制器,但输出不是我所期望的.
/mycontroller/geocode?with=%27address%3D%27%2B%24%28%27record_location___address%27%29.value
我如何提交我的价值?
解决方法
你可能想尝试更不引人注意地接近事物.我建议用以下内容替换你的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){} ); });
这实际上是将点击事件监听器绑定到您的搜索按钮,该按钮将地址发布到搜索链接的data-href属性中提供的URL或路径.
我还注意到在你的代码中,你在ruby中设置了源地址的id.如果此id属性需要根据某种页面模板条件进行更改,则可以通过向链接添加其他数据参数来扩展我的示例.例如:
<%= link_to "Search",:"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){} ); });