2011-01-13 9 views
2

基本的に私はこの+ "?direction=desc"をヘルパーメソッドに挿入したいだけです。Railsは文字列を変更し続けますか? "%3F"に

しかし、それは解析したら、それは次のように出てくる。..

/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; 
}); 

そして、私のURLをただ一つの「断片」に書き換えます。私は2つを持つことはできません!だから私は、ハードコードされたhrefに方向パラメータを追加できるだけであれば、この完全な混乱に対処できると判断しました。

+0

これはおそらくURI.escapeコールによって行われます。まさにそれをやっていることは、少しの実際のコードを見ることなしに言うのは難しいです。あなたは本当に別のものを求めていますか?そのクエリでは? –

+0

以下の回答を参照してください(約html_safeについて)。レール3の文字列はデフォルトで壊れていて、XSSを防ぐためにページ上にレンダリングされる前に安全であるとフラグする必要があります –

+0

AJAXヒストリ状態の最新のrailscastsをチェックアウトしましたか?それは具体的にエピソード175も参照しているので、それはあなたにとって有益かもしれません:http://asciicasts.com/episodes/246-ajax-history-state – clemensp

答えて

3

試してみてください。

+ "?direction=desc".html_safe 

編集:

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に あなたはレール2.3.5を使用しているので、これを試してみてください。

EDIT2: http://www.ruby-forum.com/topic/80381

具体的にこの抜粋: この読んだ後

を私は混乱が生じた ある場合、これがあると思います。 2つの異なる種類があります。 がエスケープしています。

「%xx」から を使用するURLエンコーディングは、特殊文字を表しているようです。

しかし、html_escape関数は全く別のものを で実行します。それ は、文字列を受け取り、「<」など、それをせずにHTMLに行くことができ が は「&年代リテラルとして解釈されていると「<年代に 「&」と「<」に「&」をオンに。

の '%xx'スキームを使用しているURLの特殊文字をエスケープすることは必須ですが、 は有効なURLではありません。

私は、あなたが起こっている「エスケープ」がURLエンコードであることに気付きました。あなたのクエリ/ソートなどには影響しません。あなたは、エンコードされたURLを取得し、あなたのブラウザ。

:エスケープ=> falseを無効にHTMLがこのような「&」に「&」と「へ<」として、危険な文字は、コードを表示するように変換します意味し、エスケープ「<」など、

"?"あなたの追記に "&" である必要があります:

+ "&direction=desc" 

は、この情報がお役に立てば幸いです。 =)

+0

私はそれがレール3のためだけかもしれないと思いますか?私はレール2.3.5を使用しています。任意の選択肢? – Trip

+0

ヘルパーメソッドはどのように見えますか? – clemensp

+0

私はそれを何らかの形で考える - 「テストする」.html_safe!あなたのために働く? http://weblog.rubyonrails.org/2010/5/24/ruby-on-rails-2-3-7-released –

関連する問題