如何解决一种针对多个控制器的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\'
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。