Basicaly我只想在辅助方法中插入这个+ "?direction=desc"
。
但是一旦解析就会出现这样......
/organizations/search?order_by=contactable%3Fdirection%3Ddesc
有人知道解决这个问题吗?
我的助手方法:
def search_sort(name, sort_by, order = 'asc')
link_to(name, url_for(:overwrite_params => { :order_by => sort_by + "?direction=desc" :page => nil }), :class => 'selected save_pushstate')
...
我知道你在想什么。只需添加:订购。问题在于我使用的是来自#175轨道广播的AJAX历史记录保护程序。
$(".save_pushstate").live("click", function() {
$.setFragment({"order_by" : $.queryString($(this).attr('href')).order_by});
//$.setFragment({"direction" : $.queryString($(this).attr('href')).direction});
return false;
});
它将我的网址重写为一个"片段"。我不能有两个!所以我决定如果我可以在硬编码的href中添加方向参数,它可以处理这整个混乱。
答案 0 :(得分:3)
尝试:
+ "?direction=desc".html_safe
编辑: 由于你使用的是rails 2.3.5,试试这个:
def search_sort(name, sort_by, order = 'asc')
link_to(name, url_for(:overwrite_params => { :order_by => sort_by + "?direction=desc" :page => nil }, :escape => false), :class => 'selected save_pushstate')
...
请注意url_for中的“:escape => false”。
EDIT2: 看完之后: http://www.ruby-forum.com/topic/80381
特别是这段摘录:
我认为这就是混乱所在 产生。有两种不同的类型 逃避的事情。
听起来你在谈论 使用'%xx'的URL编码 代表特殊字符。
然而,html_escape函数确实如此 完全不同的东西。它 需要一个字符串然后变成'&'成 '&安培;'和'<'进入'<'等等 它可以进入HTML而不是 解释为文字'&'和'<'s。
转义网址中的特殊字符 使用'%xx'方案是强制性的, 否则它们不是有效的URL。
我已经意识到你发现的'转义'是url编码,它不应该影响你的查询/排序等。你可以通过获取编码的URL并将其输入浏览器来测试它。
:escape => false禁用html转义,这意味着危险字符会转换为显示代码,例如'&'进入'&'和'<'进入'<'等,
和“?”你的追加应该是“&”:
+ "&direction=desc"
希望这会有所帮助。 =)