我想也许数组是可行的方法,但我不确定如何只允许整数数组。以下是我开始的内容:
def put_params
params.require(:project).permit(technologies: [])[:technologies]
end
我希望能够安全地接受任意数量的技术ID。
答案 0 :(得分:2)
只要将technologies
param作为数组传递,您只需使用
def put_params
params.require(:project).permit(:technologies)
end
这里的基本部分是你如何传递参数。您需要确保参数作为Array传递。您可以在official documentation中阅读更多内容。
params散列不仅限于一维键和值。它可以包含数组和(嵌套)哈希。要发送一组值,请附加一对空方括号" []"关键名称:
GET /clients?ids[]=1&ids[]=2&ids[]=3
此示例中的实际网址将编码为" / clients?ids%5b%5d = 1& ids%5b%5d = 2& ids%5b%5d = 3" as" ["和"]" URL中不允许使用。大多数时候你不必担心这个问题,因为浏览器会为你处理它,Rails会在收到它时将其解码,但如果你发现自己不得不将这些请求发送给手动服务器,你必须记住这一点。
params [:ids]的值现在为[" 1"," 2"," 3"]。请注意,参数值始终是字符串; Rails不会尝试猜测或转换类型。