【问题标题】:UTF-8 trouble in rails app when passing to production传递到生产时 Rails 应用程序中的 UTF-8 问题
【发布时间】:2012-03-18 21:46:21
【问题描述】:

我刚刚在他的生产环境中通过了我的应用程序:

  • debian
  • nginx
  • 独角兽
  • mysql

在开发中我使用:

  • mac osx 10.7.3
  • webrick
  • sqlite

当我转到带有一些 UTF-8 字符的视图时出现错误:

ActionView::Template::Error (incompatible character encodings: UTF-8 and ASCII-8BIT):
    1: render renderer_for(:new)
  app/admin/projects.rb:122:in `block (2 levels) in <top (required)>'

我已经在我的文件顶部添加了这个:

# encoding: utf-8

它可以在我的开发环境中工作,但不能在我的生产环境中工作,有什么想法吗?

编辑

错误来自这里:

f.has_many :roles do |app_f|
  app_f.inputs do
    # if object has id we can destroy it
    if app_f.object.id
      app_f.input :_destroy, :as => :boolean, :label => "Supprimer l'utilisateur du projet"
    end
    app_f.input :user,      :include_blank => false, :label_method => :to_label
    app_f.input :role_name, :include_blank => false 
    #app_f.input :role_level, :label => 'Author type',  :as => :select, :include_blank => false, :collection => Role::role_list
  end
end

如果我更改当前语言环境,它不会改变任何东西。

编辑

我正在使用 ruby​​ 1.9.3 和 rails 3.1.0 我没有要显示的视图,因为我使用的是ActiveAdmin DSL

【问题讨论】:

    标签: ruby-on-rails utf-8 activeadmin


    【解决方案1】:

    我通过 mysql2

    在我的 Gemfile 中更改了 mysql

    它工作:)

    【讨论】:

      【解决方案2】:

      我发现了 2 个关于您的问题的问题,您是否看过这些问题,希望答案可以帮助您解决问题。 :)

      Question 1 Question 2

      【讨论】:

      • 第 122 行是带有 then 标签标签的行吗?我认为你的特殊字符有问题 > '
      • 这个字符没有问题,只是 mysql gem 的一个他妈的问题 :)
      【解决方案3】:

      你没有告诉你使用的是哪个 Ruby 版本。而且你必须显示视图代码。

      编码管理难,Ruby/Rails也不例外。

      Yehuda KatzJEG2 撰写了一些关于编码以及 Rails 是如何进行编码的精彩文章。

      【讨论】:

      • 我不知道为什么,但是错误行对应于没有任何字符串的行
      • 没有视图代码,我正在使用 ActiveAdmin 并且是用于我的视图的内部 DSL。我通过在我的 gemfile 中将 mysql 更改为 mysql2 解决了我的问题
      • 好吧,这是有道理的,因为“mysql”无法保存编码元数据,但 mysql2 可以。我记得我在别处读过一些关于这类问题的文章。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-13
      • 2011-01-11
      相关资源
      最近更新 更多