unescape用于选择选项的HTML

时间:2014-06-17 11:49:19

标签: html ruby-on-rails

我有一个select标签,用于通过网址更改过滤器。在更改时,我重新加载页面以相应地更新结果。新选择的过滤器显然应该显示为已选中。但这无效。

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

我删除了(:selected =>) unnecessary.

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上使用hhtml_safeselect tag,但到目前为止,我的尝试都失败了。

有什么想法吗?

更新

我更改了生成rating_filter_options的帮助程序并正确放置了CGI.unescape,现在它返回:

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

另外,我对CGI.unescape使用request.env['PATH_INFO']来确保它是相同的。日志中的结果&amp; HTML批准它现在是正确的。 但是所选过滤器仍未被选中...

1 个答案:

答案 0 :(得分:0)

CGI应该有效。

irb(main):112:0> CGI.unescape("/rating%3E=1")
=> "/rating>=1"