基本上我只想在helper方法中插入这个+ "?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个railscast的ajax历史保护程序。
$(".save_pushstate").live("click", function() {
$.setFragment({"order_by" : $.queryString($(this).attr('href')).order_by});
//$.setFragment({"direction" : $.queryString($(this).attr('href')).direction});
return false;
});
它将我的url重写为一个“片段”。我不能有两个!所以我决定,如果我可以在Href硬编码中添加direction参数,它可以处理整个混乱。
最佳答案
尝试:
+ "?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中的“:escape=>false”。
编辑2:
阅读此文后:
http://www.ruby-forum.com/topic/80381
特别是这段摘录:
我想这就是混乱的地方
产生。有两种不同的类型
逃走了。
听起来你在说
使用'%xx'的URL编码
表示特殊字符。
但是,html_escape函数可以
完全不同的东西。它
获取字符串并将“&”转换为
“&”和“它可以进入HTML而不必
解释为字面的“&”和“转义url中的特殊字符
必须使用'%xx'方案,
否则它们不是有效的url。
我已经意识到发生的“转义”是url编码,它不应该影响您的查询/排序等。您可以通过获取编码的url并将其键入浏览器来测试它。
:escape=>false禁用HTML转义,这意味着危险字符将转换为显示代码,例如“&”转换为“&”和“还有“?”在您的附件中应该是“&”:
+ "&direction=desc"
希望这有帮助。=)
关于ruby-on-rails - Rails不断将我的字符串“?”更改为“%3F”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4683321/