如何解决如何在 Rails 4 中允许参数,其中变量 param 可以是字符串或哈希?
如何在 Rails 中允许 params
中的变量 param 可以是字符串或哈希?
例如,如何允许参数“abc”?
"abc" => "xz" (case1)
# or
"abc" => { "v" : "yz"} (case2)
参数可以是上述任何一种格式。
如果我使用 params.permit(:abc,abc: [:v])
(认为这将允许两者)但这只允许 hash
并且 abc
在 case1 时设置为 nil
。
解决方法
在使用 permit
/strong 参数之前统一这两种变体怎么样?
if params[:abc].is_a? String
params[:abc] = {v: params[:abc]}
end
现在您知道如果 :abc
存在,它将是一个 Hash
。
这不是一个好方法,最好始终为参数使用相同的类型。您应该为这两个参数使用不同的名称。
但是如果您仍然想为两种参数使用一个名称,那么您有两种选择。在允许之前将字符串转换为哈希或哈希为字符串,或者根据参数的类型添加检查以允许。
if params[:abc].is_a? String
params.permit(:abc)
else
params.permit(abc: [:v])
end
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。