Маршрутизация с двойным вложением - PullRequest
0 голосов
/ 05 августа 2009

В настоящее время у меня есть шаги, которые относятся к процедурам:

map.resources :procedures, :has_many => :steps

И это отлично работает для меня, я получаю URL, которые выглядят как /procedures/3/steps/5.

Тем не менее, предположим, что я хотел добавить еще один слой, фигуры, которые относятся к шагам, чтобы получить это: / rules / 3 / steps / 5 / figure / 1

Если бы не было URL-адреса, как именно я бы сделал для этого маршрутизацию?

Редактировать : Может быть, я не должен откладывать это в сторону, должен Я делаю это? Рисунки - это просто контейнеры для изображений, которые я буду отображать в «Шаги», поэтому пользователь не будет «посещать» какие-либо рисунки, мне просто нужно извлечь изображения из рисунков.

Ответы [ 3 ]

2 голосов
/ 05 августа 2009
map.resources :procedures do |procedure|
  procedure.resources :steps do |step|
    step.resources :figures
  end
end

Если вам нужны такие маршруты, как / figure /, используйте:

map.resources :procedures, :shallow => true do |procedure|
  procedure.resources :steps do |step|
    step.resources :figures
  end
end

По вашему мнению, это что-то вроде:

<%= link_to "Figure", figure_url(@procedure, @step, @figure) -%>
1 голос
/ 05 августа 2009

Из вашего комментария я думаю, что вы правы: вам никогда не понадобится прокладывать маршрут к цифрам ... и вы никогда не захотите излишне усложнять свои маршруты.

Похоже, что самым дальнейшим шагом будет действие Показать ваши шаги ... и вы просто попросите ActiveRecord список рисунков для этого шага. То есть у вас будет

class Step < ActiveRecord::Base
  has_many :figures
end

и

class Figure < ActiveRecord::Base
  belongs_to :step
  has_many :images #perhaps?
end

но для маршрутизации вам нужно заботиться только о ресурсах, которые будут запрошены RESTful - в этом случае он выглядит как ваш procedures и связанный с ним steps. Маршрут, который вы перечислили в этом вопросе, выглядит для меня точным!

1 голос
/ 05 августа 2009

Это сообщение в блоге объясняет это лучше, чем я, с моей головы. По сути, вы можете использовать опцию : name_prefix при определении ваших маршрутов для достижения того, что вы ищете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...