2013-08-12 4 views
1

У меня возникли проблемы со структурой моих (в настоящее время вложенных) ресурсов:Как структурировать вложенные ресурсы по умолчанию?

Моих структура: Сообщения -> Сообщения -> Комментарии -> New

Моего код до сих пор: http://jsbin.com/ewoqed/6/edit

Если вы перейдете к сообщению, нажмите View Comments, а затем нажмите Add Comment, это почти мой желаемый эффект. Однако я бы хотел, чтобы это было поведением пользователя по умолчанию, без необходимости щелчка по ссылкам. Таким образом, вместо того, чтобы идти на /posts/1/comments/new, это будет всего лишь /posts/1, и все шаблоны будут отображены оттуда.

У меня есть ощущение, что я излишне вложенные маршруты, но я не уверен, как прикрепить дополнительные данные (комментарии и новую запись комментариев) на загрузку моего PostController. Это возможно?

ответ

4

Есть a great post on the hashrocket blog о том, когда и почему необходимо вложить маршруты.

По существу, вы должны вложить свои маршруты, когда хотите вложить шаблоны, и не вставлять их, если вы не хотите отображать шаблоны.

+0

Спасибо Алекс, это полезный пост. К сожалению, он не покрывает загрузку всего (сообщение + его комментарии + добавить форму комментария) по тому же маршруту, что и я. – joecritch

3

ОК, есть два способа, вы можете сделать то, что вы хотите:

  1. Вы можете перенаправляют в крючке, например, afterModel делая this.transitionTo ([childRoute])
  2. Вы можете использовать {{render}} помощника, чтобы сделать то, что вам нужно в родительском пути, и только родительские маршруты

Я думаю, вы хотите вариант 2, т.к. действительно, вы не хотите раздельных URL-адресов, вы хотите, чтобы URL-адрес, который имеет место, имеет некоторые другие вещи, когда вы его просматриваете. Вот почему я думаю, что вам нужно {{render}}

Также есть более подробное введение в помощник рендера in the guides section of the website.

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