Передача переменной JavaScript в Ruby в поле со списком nav

Обновленный пример

Я использую поле выбора в качестве навигации. Когда Я выбираю пункт, я хотел бы быть перенаправлен на эту страницу.

= select (@organization, "tabs", @organization.tabs.collect { |t| t.title }, {} { :onchange => "escape_javascript(#{ render edit_organization_tab_path(@organization, this.value)})"} )

Так что этот пример не работает, потому что я не уверен, как передать переменную Javascript в Ruby

Возможно ли сделать это полностью в Ruby? Или я должен использовать jQuery?

1
задан Trip 18 August 2010 в 20:46
поделиться

3 ответа

Если вы используете jQuery, вы можете сделать это примерно так:

= select(@organization, "tabs", @organization.tabs.collect { |t| [ t.title, edit_organization_tab_url(t) ] }, { }, :onchange => "window.location.href=$(this).val()")

Значением для каждого элемента в списке выбора должен быть URL-адрес, на который вы хотите перенаправить пользователя.

Я не совсем понимаю, что вы имели в виду, помещая вызов рендеринга Rails внутри блока JavaScript.

1
ответ дан 2 September 2019 в 22:03
поделиться

Задумывались ли вы, как это может ухудшиться, если у пользователя не включен JavaScript? В идеале элементы ссылки должны быть доступны как обычные элементы , чтобы пользователь мог посещать страницу без JS. Тем более, что ваше поле выбора контролирует навигацию по сайту, я бы порекомендовал решение «прогрессивного улучшения» и сначала напишите разметку без JS, а затем добавьте поверх нее поведение JS. Вам могут понадобиться некоторые элементы CSS и

, которые напоминают поле выбора, но не являются буквально полем выбора, таким образом у вас будет больше контроля над содержимым. Пара других вещей, как указал тэдман, перенаправление пользователя в JavaScript сводится к установке window.location . Если вы используете jQuery, отметьте событие изменения , которое вы можете прикрепить к событиям выбора в вашем поле со списком, и перенаправьте пользователя при необходимости. Наконец, используя CSS3 border-radius и другие свойства, вы можете создать что-то, очень похожее на поле выбора, но с гораздо большей функциональностью. Вы также можете найти подобный компонент, поискав в Google этот пример .

1
ответ дан 2 September 2019 в 22:03
поделиться

Вам не нужен jQuery, но вам понадобится Javascript. В конечном итоге вам нужно будет либо использовать (и, возможно, создать) помощника, который создаст готовое для навигации поле выбора (включая необходимый код Javascript), либо добавить прослушиватели событий к вашему выбору непосредственно в вашем представлении (встроенном или во включенном скрипте) .

0
ответ дан 2 September 2019 в 22:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: