0

ホームページにバックボーンを使用するRailsアプリがあります。ナビゲーションバーに検索フィールドがあります。ユーザーが名前を検索すると、ドロップダウンバーが開き、名前に特定の文字が含まれているすべてのユーザーが表示されます。その時点で、ユーザーは任意のプロファイルへのリンクをクリックできます。バックボーンコレクションの「Users」は、このようなURLに基​​づいて構築されており、「key」は検索ボックスに入力された文字を表します。

var url = "users / search/"+キー;

ただし、アプリは限られた方法でのみバックボーンを使用します。たとえば、ユーザーがリンクをクリックすると、ページが変更され、に移動し localhost:3000/users/28ます。ユーザーのプロファイルページで検索バーを使用できるようにしたいのですが、プロファイルページから名前を検索すると、URL(コンソールログ内)は次のようになります。

/users/users/search/" + key;

つまり、ユーザーのプロファイルページから検索すると、ajaxリクエストのURLがUsersコレクションのようになっている場合でも、検索クエリに余分な「ユーザー」が追加されます(404 not foundエラー)。

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 に答える