我有一个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
上使用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']
来确保它是相同的。日志中的结果&amp; HTML批准它现在是正确的。 但是所选过滤器仍未被选中...
答案 0 :(得分:0)
CGI
应该有效。
irb(main):112:0> CGI.unescape("/rating%3E=1")
=> "/rating>=1"