1

Web サービスにこれらのルートがあり、ブラウザーから直接それらのいずれかをヒットすると、正しい値が返されます。

app.get('/repairs', repair.findAll);
app.get('/repairs/:id', repair.findById);

バックボーンにこれを行うように依頼すると、予期せず電話がかかってきます

app.get('/repairs', repair.findAll);

届くと思ったら

app.get('/repairs/:id', repair.findById);

「/repairs/:id」ではなく「/repairs」を呼び出しているように見えるコードは、

var EditRepair = Backbone.View.extend({
        el : '.page',
        render : function(options) {
            var scope = this;
            var repair = new Repair({id: options.id});                    

            //This has the correct id
            console.log(options.id);

            //I would expect this to call /repairs/12344312
            //However it calls /repairs
            repair.fetch({
                success : function(repair){
                    var template = _.template($('#edit-repair-template').html(), {repair : repair});
                    scope.$el.html(template); 
                }
            });
        }
    }); 

    var Repair = Backbone.Model.extend({
        urlRoot : 'repairs'
    }); 

    var Router = Backbone.Router.extend({
        routes: {
            'edit/:id' : 'editRepair'
        }    
    });

    var editRepair = new EditRepair();    
    var router = new Router();

    router.on('route:editRepair', function(id) {
        console.log('Edit Id : ' + id);
        editRepair.render({id:id});
    });

options.id は console.logged にすることができ、アイテムの正しい ID を示します。これまでに、mongodb の _id とバックボーンの id の違いでいくつかの問題が発生しましたが、これは回避できましたが、私の人生では、これが修理/ ID ではなく修理の呼び出しを発行している理由がわかりません。

どんな助けでも感謝します。

4

1 に答える 1

2

私のせいで、URIコンポーネントをエンコードしていたajaxプレフィルターがありました。

これは、発行されているリクエストを台無しにしていました。

    $.ajaxPrefilter( function( options, originalOptions, jqXHR ) {
      options.url = "http://localhost:3000/" + encodeURIComponent( options.url );
      console.log(options.url);
    });

に変更されました

        $.ajaxPrefilter( function( options, originalOptions, jqXHR ) {
          options.url = "http://localhost:3000/" + options.url;
          console.log(options.url);
        });
于 2013-02-06T16:51:55.710 に答える