Rails Routing - PullRequest
       10

Rails Routing

1 голос
/ 28 января 2009

Я построил новый портал на Rails, к которому можно получить доступ, скажем: https://xyz.com

Проблема в следующем: 1.) Имеет 2 вкладки - «ShipmentInfo» и «Панель мониторинга устаревших отправлений», реализованные с использованием

<li> tags and YUI library’s tabview.
    <ul class="yui-nav">
        <li id="tab1" class="selected"><a href="#tab1">Shipment Info</a></li>
        <li id="tab2"><a href="#tab2">Aging Shipments Dashboard</a></li>
    </ul>

2.) Когда я нажимаю на вкладку «Панель мониторинга устаревших поставок», URL-адрес должен быть - https://xyz.com/#tab2, но вы видите только https://xyz.com. Я предполагаю это из-за реализации вкладок на стороне клиента.

3.) После того, как я нажму кнопку «Текущая сводка» на этой вкладке, я получу соответствующие результаты, но вместо того, чтобы показывать активную вкладку, для которой установлена ​​«Панель мониторинга устаревших отправлений», она всегда устанавливается на вкладку «ShipmentInfo».

Как настроить activeTab на получение результатов на соответствующую вкладку, из которой был сделан запрос? Все запросы формы используют метод GET.

Или есть способ, в котором я могу явно упомянуть в route.rb, основываясь на параметрах, что activeTab должен быть установлен в «Aging Shipments Dashboard»?

Спасибо, Радж.

Ответы [ 2 ]

1 голос
/ 28 января 2009

Насколько я могу судить, все, что делает YUI для преобразования этого ul в набор вкладок, вероятно, не имеет ничего общего с href внутри li. Я думаю, что вы должны проверить синтаксис использования для создания ваших вкладок.

Продолжая, ссылки href указывают только на якоря на текущей странице. Это означает, что клиент (браузер) не должен отправлять HTTP-запрос, чтобы повторно получить текущую страницу. Я не думаю, что современные браузеры когда-либо делают. Я сомневаюсь, что они отправляют якорную часть URL (часть после #), поскольку HTTP-сервер не заботится об этой информации.

Это означает, что ваше приложение rails никогда не уведомляется о том, когда пользователь нажимает на вкладку, и никогда не получает часть URL после #. Таким образом, вы не можете поместить какие-либо правила об этом в таблицу маршрутизации.

РЕДАКТИРОВАТЬ: Я забыл сказать вам, что на самом деле должно произойти.

  1. YUI (или некоторый другой код javascript) следует прикрепить к onClick li, который выглядит как вкладка, из вашего описания.
  2. Когда пользователь нажимает на вкладку, он читает URL-адрес и каким-то образом определяет, какой тег содержимого отображать в качестве содержимого вкладки. Например, это может быть div, который содержит содержимое 2-х вкладок, и он может иметь id из tab2 или что-то в этом роде.
  3. Затем делает содержимое текущей вкладки невидимым. Обычно это делается с помощью свойства CSS display, для которого устанавливается значение display: none.
  4. Наконец, содержимое вкладки, на которую вы нажали, становится видимым. Что можно сделать, используя display: block или что-то похожее.
0 голосов
/ 29 января 2009

Да. Возможно, у вас уже есть эти строки в конце вашего файла rout.rb:

map.connect ': controller /: action /: id' map.connect ': controller /: action /: id.: format'

Измените их на:

map.connect '#: controller' map.connect ': controller /: action /: id' map.connect ': controller /: action /: id.: format'

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

...