基本上我只想在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/

10-14 15:02
查看更多