Отключить HTML в опциях для выбора

0

У меня есть тег select, который используется для изменения фильтра по URL-адресу. При изменении я перезагружаю страницу, чтобы соответствующим образом обновлять результаты. Очевидно, выбранный фильтр должен отображаться как выбранный. Но это не сработает.

<%= select_tag("filter_rating" , (:selected =>) options_for_select(rating_filter_options, (request.env['PATH_INFO']))) %>

Я удалил (:selected =>) поскольку это кажется ненужным.

Значение rating_filter_options:

# [["by my rating", "/all"], ["1+", "/rating%3E=1"], ... , ["5", "/rating%3E=5"]]

Причина, по которой текущий фильтр не будет выбран, заключается в том, что request.env['PATH_INFO'] возвращает /rating>=1, что отличается от /rating%3E=5. Таким образом, решение было бы избежать этого неприятного %3E.

Я попытался использовать CGI.unescape, h, html_safe в select tag, но до сих пор мои попытки потерпели неудачу.

Есть идеи?

Обновить:

Я изменил помощника, который создал rating_filter_options и правильно разместил CGI.unescape чтобы он теперь возвращался:

# [["by my rating", "/all"], ["1+", "/rating>=1"], ... , ["5", "/rating>=5"]]

Кроме того, я использую CGI.unescape для request.env['PATH_INFO'] чтобы убедиться, что это то же самое. Результат в журналах и HTML утверждают, что теперь это правильно. НО выбранный фильтр по-прежнему не выбирается...

Теги:

1 ответ

0
Лучший ответ

CGI должен работать.

irb(main):112:0> CGI.unescape("/rating%3E=1")
=> "/rating>=1"
  • 0
    Я пытаюсь некоторые варианты с CGI, но это не похоже на работу ...
  • 0
    Какие проверки не работают? Пожалуйста приложите ваши попытки.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню