2013-03-03 22 views
0

我有一个在主页上使用主干的导轨应用程序。它在导航栏中有一个搜索栏。如果用户搜索名称,则会打开一个下拉栏,其中显示名称中具有特定字母的所有用户,此时用户可以单击指向任何配置文件的链接。骨干集“用户”建立在这样的网址,用‘钥匙’代表在搜索框中输入的字母(S)尝试组合主干和导轨时的额外用户url

VAR URL =‘用户/搜索/’+键;

然而,该应用程序仅以有限的方式使用骨干网络,例如,用户点击链接后,发生页面更改并被带到localhost:3000/users/28。我希望搜索栏在用户的个人资料页面上可用,但是,如果我从一个个人资料页面搜索的名称,该URL(在控制台日志)现在变成。

/users/users/search/" + key; 

换句话说,从用户的个人资料搜索页面增加了一个额外的“用户”进入搜索查询(和未找到404错误),即使对于Ajax请求的用户集合是这样

var url = "users/search/" + key; 

出于好奇的网址,我添加了一个路线在routes.rb中设法处理“/用户/用户的情况

match '/users/search/:query' => 'users#getUsersByName', defaults: {format: :json} 
    match '/users/users/search/:query' => 'users#getUsersByName', defaults: {format: :json} 

然而,即使这消除了404错误,并返回搜索结果,如果我点击链接,访问其他用户的个人资料(从用户的个人资料页面),Rails将我带到/ users/users/28,因为模板中的链接正在被添加到基本用户url中。

任何人都可以推荐我怎么去处理这个问题?在模板

链接

<a href='users/{{= id }}'> 

用户收集

window.Users = Backbone.Collection.extend({ 

    model: User, 
    url:"users", 
    findByName:function (key) { 

     var url = "users/search/" + key; 
     console.log('findByName: ' + key); 
     var self = this; 
     $.ajax({ 
      url:url, 
      dataType:"json" 
      success:function (data) { 

回答

0

它需要有用户之前斜杠。因此,而不是这个

var url = "users/search/" + key;