2012-06-25 4 views
0

Немедленно объявите: не рассматривать эту проблему как реальное приложение. Все делается исключительно с целью самообразования и обучения spine.jsSpine.js и два контроллера

Во-вторых, я знаю об отношении. Я не хочу использовать, потому что мир шире, чем простые отношения. Например, страница со статьей, в которой вы хотите показать пользователей, которые сейчас находятся в сети, или всех тех, кто участвовал в написании статьи.

Представьте себе обычное приложение, которое отображает список сообщений, которые вы можете создавать, показывать, редактировать и удалять. Все на spine.js, все работает отлично. Основано на приложении spine.rails3. Затем я добавил модель комментария с полями post_id и body. Добавлена ​​кнопка Комментарии к показу. Все, что я хочу - загрузить комментарии для этой статьи, нажав кнопку «Комментарии». Мой 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 

В хром консоли все работает отлично:

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

И получает от сервера все комментарии с post_id = 11.

И моя проблема в том, что я не знаю, как t о делать то же самое от контроллера сообщений :-( В моей posts.js.coffee:

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

Аnd здесь проблема .... Как реализовать 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' 

А на выбранной линии не работает. Я не знаю, что делать ...

Главный вопрос: как вызвать контроллер с другого контроллера с определенным параметром, а результаты отображаются в главном контроллере?

Возможно, это вопрос о нобе, но я надеюсь на вашу помощь. Большое спасибо заранее.

ответ

0

Я вижу, вы используете стопку позвоночника. стек передается в контроллерах, которые управляются стеком. поэтому внутри Index вы можете получить доступ к родительскому стеку с помощью @stack.

+0

Извините, но я не совсем понимаю. Как точно использовать ** ** стек ** в контроллере ** Index **? Как я могу получить доступ к ** post_id ** в контроллере индекса? В App.Comments, конечно. – none

+0

Я понял о @stack. Я попытаюсь использовать. Thanx. – none

Смежные вопросы