Я уже работал над этой топи c, но нашел только частичное решение. Вот лучше объяснение проблемы:
Я управляю 2-мя категориями бизнес-объектов:
- Определенные бизнес-объекты, которые можно рассматривать как шаблоны (есть флаг is_template = true)
- Используемые бизнес-объекты, которые являются копиями предыдущих, реализованных, с небольшими отличиями
У меня 3 ожидания по поводу маршрутизации:
Положитесь на помощников, таких как used_business_objects_path или new_defined_business_object_path
Отображайте удобные для пользователя URL-адреса, такие как / used_metadata / new (metatada - это имя, которое мой клиент запрашивает для отображения вместо бизнес-объекта)
Распространение переменной типа, которая будет использоваться контроллером
Я бы хотел построить для них эффективный маршрут, включая параметр для контроллера к какому типу объекта он должен выбрать:
# GET /business_objects
# GET /business_objects.json
def index
if params[:type] == 'defined'
@business_objects = BusinessObject.joins(translated_objects).pgnd(current_playground).defined.visible.search(params[:criteria]).
select(index_fields).order(order_by).paginate(page: params[:page], :per_page => paginate_lines)
else
@business_objects = BusinessObject.joins(translated_objects).pgnd(current_playground).used.visible.search(params[:criteria]).
select(index_fields).order(order_by).paginate(page: params[:page], :per_page => paginate_lines)
end
Я реализовал маршрут с ограниченной областью действия, основанный на предложении Ника Гарретта :
* 103 3 *
К сожалению, это генерирует URL как / type / type_metadata? Type = used, и помощники, похоже, не рассматривают тип как параметр.
Прочитав руководство по маршрутизации Rails, я не уверен, что то, чего я пытаюсь достичь, возможно. Вы можете помочь найти решение для этого? Большое спасибо!