问题描述
|
我有两个控制器,每个控制器都有一个自动填充文本框,用于按姓氏搜索。 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\'
});