Передача переменной JavaScript в Ruby в поле со списком nav - PullRequest
1 голос
/ 19 августа 2010

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

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

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

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

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

Ответы [ 3 ]

1 голос
/ 19 августа 2010

Если вы используете 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 голос
/ 19 августа 2010

Рассматривали ли вы, как это может ухудшиться, если у пользователя не включен JavaScript? В идеале элементы ссылки по-прежнему будут доступны в виде обычных элементов <a/>, чтобы пользователь мог посещать страницу без JS. Тем более что ваш блок выбора управляет навигацией по сайту, я бы порекомендовал решение с «прогрессивным улучшением» и сначала написал разметку без JS, а затем добавил поведение JS поверх него. Возможно, вы захотите использовать некоторые элементы CSS и <div/>, которые похожи на блок выбора, но не являются буквально блоком выбора, так что вы имеете больший контроль над содержимым. Пара других вещей, как указал Тадман, перенаправление пользователя в JavaScript сводится к установке window.location. Если вы используете jQuery, отметьте событие change , которое вы можете прикрепить к событиям выбора в вашем выпадающем списке, и при необходимости перенаправьте пользователя. Наконец, используя CSS3 border-radius и другие свойства, вы можете создать нечто, похожее на поле выбора, но обладающее гораздо большей функциональностью. Вы также можете найти такой компонент, googling включил этот пример .

0 голосов
/ 19 августа 2010

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

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