Из-за Rails magic вы можете передать ресурс непосредственно помощнику маршрута, и он будет использовать правильный идентификатор для этого ресурса. Например:
<% @foo.bars.each do |bar| %>
<%= link_to bar.name, foo_bar_path(@foo, bar) %>
<% end %>
Выше предполагается, что ваш файл маршрута выглядит примерно так:
resources :foos do
resources :bars
end
Я настоятельно рекомендую Маршрутизация с внешней стороны ; это был очень полезный ресурс для меня!
Чтобы установить порядок дочернего ресурса, вы можете использовать scope , например:
class Bar < ActiveRecord::Base
scope :ordered, -> { order(id: :asc) }
end
А потом, на ваш взгляд, позвоните foo.bars.ordered.each do |bar| etc...
. Ваш вложенный ресурс будет возвращен с наименьшего к наибольшему идентификатору, пропуская все, что было удалено.
Надеюсь, это поможет с тем, что вы спрашивали.
EDIT
Я неправильно понял вопрос. Для динамического создания «следующего» идентификатора вы можете создать метод next
в своем дочернем классе. Этот ответ похоже на то, что вы хотите. Тогда, по вашему мнению, вы можете просто позвонить:
<%= link_to "Next", bar_path(current_bar.next) %>