0

パラメータに問題があります。次のパラメーターを受け取っています。

{"utf8"=>"✓", "authenticity_token"=>"...=", "Portugu\xC3\xAAs"=>{"title"=>"313" } }

私のコントローラーでは、キー => "Portugu\xC3\xAAs" を使用する必要がありますが、最初に正しい形式 (つまり -> Português) にする必要があり、どうすればそれができるのかわかりません。

編集:

ワークフロー 1. ユーザーが言語を保存します 2. その言語をフォームで使用して、次のように情報を保存します。

Português[title]

3. ユーザーはその形式で複数のロケールを持つことができるため (手順 1 で保存されたすべてのロケール)

locales.each do |locale|
 ...
 :value => params[locale.key][:title]

問題は、locale.key ('Português') が "Portugu\xC3\xAAs" と一致しないため、nil でクラッシュすることです。

これで私を助けてもらえますか?ありがとうございました

4

2 に答える 2

0

私はこれを試しましたが、結果は良好です。

    <% p = {}
       p["Português"] = {}
       p["Português"][:title] = "Title in Portugês" %>
    <p><%= p["Portugu\xC3\xAAs"][:title] %>

そして、私は得る

<p>Title in Portugês</p>

問題はわかりません。

于 2012-06-20T18:07:06.320 に答える
0

私にとってうまくいった解決策は、受信したパラメーターを反復し、URI.escape を使用して文字列を比較することでした。一致する場合は、enc_locale が設定され、値で使用されます。助けてくれたみんなに感謝します!

    enc_locale = ""
    params.each do |param|
      if URI.escape(param[0]) == URI.escape(locale.key)
        enc_locale = param[0]
      end
    end

   ...
   :value => params[enc_locale][:title]
于 2012-06-20T18:48:26.797 に答える