Ruby on rails RubyonRails-将参数存储到数据库
我有一个POST请求中的哈希参数(它是一个Ruby on rails RubyonRails-将参数存储到数据库,ruby-on-rails,ruby,hash,parameters,Ruby On Rails,Ruby,Hash,Parameters,我有一个POST请求中的哈希参数(它是一个ActionController::Parameters): 我想把它保存在我的数据库里。最好的方法是什么 我尝试将其转换为带有params.inspect的字符串,但不起作用,我还尝试序列化(params),但也失败了。 我的列是一个t.text,当我执行@purchase.update_attributes我的列:params时,我得到错误:ArgumentError(UTF-8中的无效字节序列) 谢谢您试过使用吗 在您的模型中 类购买
ActionController::Parameters
):
我想把它保存在我的数据库里。最好的方法是什么
我尝试将其转换为带有params.inspect的字符串,但不起作用,我还尝试序列化(params),但也失败了。
我的列是一个t.text,当我执行@purchase.update_attributes我的列:params
时,我得到错误:ArgumentError(UTF-8中的无效字节序列)
谢谢您试过使用吗
在您的模型中
类购买2.1.0 :010 > a="St\xE9phane"
=> "St\xE9phane"
2.1.0 :011 > a.scrub!('e')
=> "Stephane"
或者,您可以将数据库配置为使用unicode
.在多次尝试都没有成功后,我决定绕过这个问题。 因为ByDatabase字段是一个文本列,所以我所做的是创建一个包含所有参数的字符串。之后,我可以将字符串存储到文本字段数据库列中
parameters = String.new
params.each do |key, value|
parameters += key + " = " + value + " | "
end
谢谢@pavelS,是的,我尝试了你的建议,但我得到了错误
ArgumentError(UTF-8中的字节序列无效)
@ZazOufUmI请阅读此名字和地址
引起问题的参数。修复您的编码可能会修复serialize
的问题。我同意您关于first_name
参数的意见,但我无法控制这些参数(来自用户)。我试过.encode
但它返回NoMethodError(未定义的方法encode!',用于#)
。对于Serialize
返回NoMethodError(未定义的方法Serialize'for#)
使用params.map{x | x.try(:scrub)}
删除字符串中的所有无效字符。它内置于2.1中,早期版本也有gem。要接受嵌套哈希,您应该实现deep\u map
(您可以用谷歌搜索,这里有一个选项)。请注意,serialize应在模型中使用,而不是在控制器中使用。您是否计划稍后使用此数据,还是仅用于日志记录目的?这是用户输入,因此我无法控制它。我会尽快尝试你的建议!谢谢
2.1.0 :010 > a="St\xE9phane"
=> "St\xE9phane"
2.1.0 :011 > a.scrub!('e')
=> "Stephane"
parameters = String.new
params.each do |key, value|
parameters += key + " = " + value + " | "
end