ホームページにバックボーンを使用する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) {