我需要使用 rails 用于将字符串转换为适合创建具有嵌套属性的对象构建的参数哈希的内部机制。我找不到在请求 rails 的生命周期中实际准备 params[] 哈希的位置。
字符串看起来像:
"foo[butter]=fat&foo[cheese]=cheddar&bar[fork]=pointy&bar[knife]=sharp"
只是为了提供一些上下文,上面的字符串是通过对我的应用程序的 API 调用从加密请求中提取的。这就是为什么它一旦解密就以这种形式存在。例如
def create
decrypted = decrypt(params[:q])
Object.create(magically_convert_to_param_hash(decrypted))
end
我意识到我可以手动解析这个字符串并将其转换为所需的哈希值,但考虑到框架中已经存在的代码,它似乎有点潮湿。
最佳答案
从 Rails 4 开始,您也可以这样做:
raw_parameters = {
:foo => {
:butter => "fat",
:cheese => "cheddar",
},
:bar => {
:fork => "pointy",
:knife => "sharp",
}
}
params = ActionController::Parameters.new(raw_parameters)
那么你可以像这样要求和允许
params.require(:foo).permit(:butter, :cheese)
params.require(:bar).permit(:fork, :knife)
关于ruby-on-rails - 手动创建参数哈希 rails ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8008986/