Rails:“Mysql2::Error: Incorrect string value:”尝试保存“params.inspect”时

Posted

技术标签:

【中文标题】Rails:“Mysql2::Error: Incorrect string value:”尝试保存“params.inspect”时【英文标题】:Rails: "Mysql2::Error: Incorrect string value:" when trying to save "params.inspect" 【发布时间】:2016-08-10 20:07:12 【问题描述】:

我正在尝试将 params 的输出保存到数据库(我正在保存:params.inspect) - 这是应该保存的字符串示例:

> \"utf8\"=>\"✓\", \"_method\"=>\"patch\", \"authenticity_token\"=>\"fpQC8FY8+qztD41jjcFSJRars539KRshw/vczmmJd9Q=\",
> \"car\"=>\"role_type\"=>\"1\", \"admin_id\"=>\"67\",
> \"branch_id\"=>\"1\", \"template_id\"=>\"21\", \"cost\"=>\"0.00\",
> \"carrier_additional_cost\"=>\"0.00\", ...

首先,我尝试像这样保存参数:

all_params      = params.except(:controller, :action).inspect

但它没有成功。所以:

all_params      = params.except(:controller, :action).inspect.encode("iso-8859-1")

还有这个:

all_params      = params.except(:controller, :action).inspect.encode("iso-8859-1").force_encoding("utf-8")

返回相同的错误。

如何正确保存params.inspect的输出?

我尝试保存此数据的列是text,而不是string

谢谢

【问题讨论】:

意外的字符串值是什么?是吗? 我相信 - 其他一切看起来都像“正常”角色...... params.to_s.encoding 带给你什么? 您是否尝试过强制编码为 UTF-8? @13aal - 是的,它显示在最新块代码的 OP 中。 【参考方案1】:

尝试使用params 而不是params.inspect

params 的示例输出是"controller"=>"users", "action"=>"show", "id"=>"1" 这是一个哈希值,我认为这是您要保存在数据库中的内容。

【讨论】:

以上是关于Rails:“Mysql2::Error: Incorrect string value:”尝试保存“params.inspect”时的主要内容,如果未能解决你的问题,请参考以下文章

markdown [rails:devise] Ruby on Rails的身份验证gem。 #ruby #rails

Rails:如何在 Rails 中为 Devise 设置密钥?

从 Rails 2 到 Rails 3 路由

Rails:在 Rails 控制器中捕获所有异常

如何在带有 Rails 4.2 的专用调试端口上使用工头启动 Rails?

Rails 4 的 Rails_admin 批量分配错误