0

すぐに宣言します:この問題を実際のアプリケーションと見なさないでください。すべては独学とspine.jsの学習のみを目的として行われます

第二に、私は関係について知っています。単純な人間関係よりも世界が広いので使いたくない。例として、現在オンラインのユーザー、または記事の作成に参加したすべてのユーザーに表示したい記事のあるページ。

作成、表示、編集、および削除できる投稿のリストを表示する通常のアプリケーションを想像してみてください。すべてspine.js上で、すべて正常に動作します。Spine.rails3 アプリケーションに基づいています。次に、フィールド post_id と body を持つ Comment モデルを追加しました。また、veiw Show にボタン コメントを追加しました。私が望むのは、コメントボタンを押してこの記事のコメントをロードすることだけです。私のcomment.js.coffee:

    class App.Comment extends Spine.Model
      @configure 'Comment', 'post_id', 'body', 'created_at', 'updated_at'
      @extend Spine.Model.Ajax

      @fetch_comments: (id) =>
        params =
          data: {post_id: id}
          url: '/comments/fetch'
          processData: true

        @ajax().fetch(params)
        true

Railsコントローラーで:

def fetch
  @comments = Comment.where("post_id = ?", params[:post_id])
  respond_with @comments
end

Chrome コンソールでは、すべて正常に動作します。

App.Comment.fetch_comments(11)
App.Comment.all()

サーバーから post_id = 11 のすべてのコメントを受信します。

そして私の問題は、コントローラーの投稿から同じことを行う方法がわからないことです:-(私のposts.js.coffeeでは:

class Show extends Spine.Controller
events:
  ......
  'click [data-type=show]': 'comments'
comments: ->
  @log(@item.id)
  new App.Comments(@item.id)

ここに問題があります....コントローラー App.Comments を実装する方法は、サーバーからロードされるため、コメントが必要ですか? 今、私のコントローラーは次のようになります。

Comment = App.Comment

class Index extends Spine.Controller

  constructor: (id)->
    super
    **App.Comment.fetch_comments(id)**   


class App.Comments extends Spine.Stack
  className: 'comments stack'

  controllers:
    index: Index

  routes:
    # '/comments/new':      'new'
    '/comments/':          'index'

  className: 'stack comments'

そして、選択した行では機能していません。私は何をすべきかわかりません...

主な質問は、特定のパラメーターを使用して別のコントローラーからコントローラーを呼び出す方法であり、結果はメインコントローラーに表示されますか?

初歩的な質問かもしれませんが、よろしくお願いします。よろしくお願いします。

4

1 に答える 1

0

スパイン スタックを使用しているようです。スタックは、スタックによって管理されるコントローラーに渡されます。内部Indexでは、親スタックにアクセスできます@stack

于 2012-06-25T15:47:21.000 に答える