0

私はこのフォームを持っています:

<%= form_tag posts_path, :method => :get, :class => "search_nav" do %>
    <%= text_field_tag :search, params[:search], :class => "input-long search-query", :placeholder => "#{t('.search_nav')}"  %>
     <%= hidden_field_tag('ip', "#{request.ip}") %>
     <%= hidden_field_tag('city', "#{request.location.city}") %>
     <%= hidden_field_tag('country', "#{request.location.country}") %>
     <%= content_tag(:div, "",:class => "icon-search") %>
<% end %>

次のような URL を取得します。

http://localhost:3000/en/posts?utf8=%E2%9C%93&search=check+params&ip=127.0.0.1&city=&country=Reserved

私の質問は:

URL パラメータを非表示または暗号化できますip, city and countryか?

POSTページネーション結果があるため使用できません:

<a rel="2" href="/en/posts?city=&country=Reserved&ip=127.0.0.1&page=2&search=check+params&utf8=%E2%9C%93">2</a> 
<a rel="3" href="/en/posts?city=&country=Reserved&ip=127.0.0.1&page=3&search=check+params&utf8=%E2%9C%93">3/a> 
4

1 に答える 1

2

URL パラメータを暗号化するのは無意味です。ユーザーにこれらの値を見せたくないのはなぜですか? フォームに追加する前にそれらを暗号化できますが、それは本当に必要ですか?

さらに、おそらくもっと重要なのは、これらの値がリクエストに基づいている場合、最初から送信する必要がない可能性が高いということです。#{request.xxx}結果ページでもフォームページと同じになります。これらを渡す正当な理由はありますか?これらを GET パラメータとして送信すると、実際には冗長な情報がサーバーに送信されます。Ruby/Rails は、次のページが読み込まれるときに、IP アドレスに基づいてこれらの値を自動的に計算します。

ここでの問題はフォームではなく、フォームの設計に適用したロジックにあります。状況を分析しすぎたのではないかと思います。一歩下がって問題を再考する必要があります。

于 2012-07-05T15:38:03.753 に答える