我有一个在主页上使用主干的 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) {