Как перенаправить на другую страницу, используя меню выбора и link_to - Ruby on Rails - PullRequest
3 голосов
/ 31 мая 2010

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

<select>
    <option>Select a menu</option>
    <option><%= link_to 'Home', '/' %></option>
</select>

Спасибо за вашу помощь.

Ответы [ 3 ]

14 голосов
/ 31 мая 2010

Вы не можете поместить ссылку внутри тега SELECT. Это ограничение HTML, а не Rails.

То, что вы должны сделать вместо этого, выглядит примерно так:

<%= select_tag(:menu_select, options_for_select([ 'Home', '/' ])) %>

Затем необходимо убедиться, что при выборе новой ссылки страница загружается. Это можно сделать с помощью jQuery, используя что-то вроде этого:

$('#menu_select').bind('change', function() { window.location.pathname = $(this).val() });

При изменении выбора формы загружается новый URL.

5 голосов
/ 31 мая 2010

Помощник link_to выводит гиперссылку HTML, которая не будет работать, если вложена в элемент option. Вам следует изменить параметры, чтобы они имели следующий формат:

<option value="/">Home</option>

Тогда у вас может быть какой-нибудь JavaScript, который наблюдает событие onchange раскрывающегося списка и устанавливает document.location.href в значение выбранного параметра. Это выполнит перенаправление.

В качестве альтернативы, у вас может быть кнопка Go submit рядом с раскрывающимся списком, которая отправляет форму, а затем Rails выполняет перенаправление на серверную страницу для выбранной опции с помощью помощника redirect_to.

3 голосов
/ 10 января 2013

Это также будет работать:

<select onChange="if(this.selectedIndex!=0) self.location=this.options[this.selectedIndex].value">
<option value="/">Home</option>
</select>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...