2

Backboneを初めて使用し、モデルをデータベースに保存する際に問題が発生しました。クリックすると、フィールド「プロファイル」が「100」に更新されますが、機能していません。

$->

class User extends Backbone.Model
    url: -> '/users/' + this.get("id")  '.json'

class Users extends Backbone.Collection
    model: User

class UserView extends Backbone.View
    tagName: "li"
    events:
        "click" : "changeProfile"

    render: -> $(@el).html( @model.get "name" )
    changeProfile: -> 
        $('li').removeClass('selected')
        $(@el).addClass('selected')
        @model.set( 'profile' : '100' ).save()

users = new Users
users.url = "/users.json"
users.fetch(
    success: ->
        _.each users.models, (model) ->
            view = new UserView( model: model )
            $('ul').append view.render()
)

'users' controller /'user'モデルはスキャフォールドでした(そしてコントローラーはjsonでレンダリングします)。BackboneとRailsの両方の最新バージョンを使用しています。誰かが助けることができますか?

(ChromeのJavascriptコンソールは次のエラーを登録します: "Uncaught TypeError:number is not a function")

4

1 に答える 1

0

あなたurlの for にUserがありません+:

class User extends Backbone.Model
    url: -> '/users/' + this.get("id")  '.json'
    #---------------------------------^^

その最後の部分は次のように解釈されています。

this.get("id")('.json')

は数値を返すためget('id')、「数値は関数ではありません」というエラーが表示されます。欠けているものを追加して、+文字列連結を取得するか、CoffeeScript の補間を使用します。

url: -> '/users/' + this.get('id') + '.json'

また

url: -> "/users/#{this.get('id')}.json"
于 2012-12-06T06:13:15.903 に答える