0

我有一个在主页上使用主干的 Rails 应用程序。它在导航栏中有一个搜索字段。如果用户搜索名称,则会打开一个下拉栏,显示名称中带有特定字母的所有用户,此时用户可以单击指向任何配置文件的链接。Backbone 集合“Users”建立在这样的 url 上,“key”代表在搜索框中输入的字母。

var url =“用户/搜索/”+键;

但是,该应用程序仅以有限的方式使用主干。例如,用户点击一个链接后,页面发生变化,他们被带到 localhost:3000/users/28. 我希望搜索栏在用户的个人资料页面上可用,但是,如果我从个人资料页面搜索名称,则 url(在控制台日志中)现在变为。

/users/users/search/" + key;

换句话说,从用户的个人资料页面搜索会在搜索查询中添加一个额外的“用户”(以及 404 未找到错误),即使用户集合的 ajax 请求的 url 是这样的

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

出于好奇,我在 routes.rb 中添加了一条路由来尝试处理 '/users/users' 的情况

 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) {
4

1 回答 1

0

它需要在用户之前有一个正斜杠。所以代替这个

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

var url =  "/users/search/" + key; 
于 2013-03-18T06:07:40.397 回答