一种针对多个控制器的JQuery UI自动完成的DRY解决方案?

问题描述

| 我有两个控制器,每个控制器都有一个自动填充文本框,用于按姓氏搜索。 autocomplete.json.erb存储在其对应的视图中。 下面的自动完成代码段对两个控制器都适用
  $( \".auto_complete\" ).autocomplete({        
        minLength: 2,source: \'autocomplete.json\'
    });
因为将产生以下请求:
http://localhost:3000/users/autocomplete.json?term=ab
http://localhost:3000/members/autocomplete.json?term=ab
但是,如果我使用REST路径,则URL的末尾没有结尾的\'/ \':
members_path: http://localhost:3000/users
users_path: http://localhost:3000/members
所以我必须这样做:
<%= link_to \"Users\",users_path+\'/\' %>
最后没有\'/ \'的情况下,jquery-ui将改为调用以下内容
http://localhost:3000/autocomplete.json?term=ab
在我看来,这不是一个干净的解决方案。 另一种方法是为每个控制器制作一个单独的自动完成代码和css类,以便可以将source属性分配给另一个控制器,例如:
source: \'/users/autocomplete.json\'
source: \'/members/autocomplete.json\'
是否有DRY解决此问题的方法? 谢谢。     

解决方法

您可以询问当前网址并将其用作前缀
$( \".auto_complete\" ).autocomplete({        
    minLength: 2,source: window.location.href + \'/autocomplete.json\'
});