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

对我有用的解决方案是迭代接收到的参数,并在 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 回答
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 回答