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 设置密钥?