ruby-on-rails - 手动创建参数哈希 rails

标签 ruby-on-rails nested-attributes

我需要使用 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/

相关文章:

ruby-on-rails - 自定义验证器以防止 Rails 4 应用程序中的重叠约会?

ruby-on-rails - Rails 嵌套属性/inverse_of 和 STI

forms - 具有多态 has_many 模型的嵌套属性

javascript - Rails - 从 javascript 调用 Controller

ruby-on-rails - 将 config/database.yml 的用户名更改为与您的 OSX 用户帐户相同

ruby-on-rails - 使用 Rails 预编译附加 Assets

ruby-on-rails - 如何使用由外键代替 ID 的 accepts_nested_attributes_for 同步 has_many 关联?

json - Rails 嵌套属性不会从隐藏表单输入中的 JSON 字符串创建对象

python - AtributteError "object has no attribute"- 如何在不尝试/除外的情况下防止 - 访问模型字段

ruby-on-rails - 向 Rails Composer、Devise、CanCan、Twitter Bootstrap 添加角色