我有像这样的ajax响应,
google_searched_locations [{“geometry”:{“location”:{“J”:31.482273,“M”:74.33069999999998}},“icon”:“https://maps.gstatic.com/mapfiles /place_api/icons/restaurant-71.png","id":"b93a99a46343de01d0d928f99470f9b0f5f6f11d","name":"Dunkin'Donuts“ “place_id”: “ChIJSeoh6hkEGTkRsd0e1crAbHU”, “等级”:4.3, “参考”:“CnRhAAAAewgE30hrAcax1xdGPIf7M863 bOtNhRgfnncMx17uWMgtdTyGHGbTO76LX6yXsPyB4PcvfVzIeeIR1bxG0oSambqMYxFWwqHY3Cyfs6uWFp2QbVkGObvQ1LlTrdqLh1eZVgX8aL0iRFFhAnHEM8u1RxIQACDCn2BMD3IiG7tKri31BRoULMSagTU-EmxswgLxzCOWPVVnlpI” , “范围”: “GOOGLE”, “类型”: “餐厅”, “食品”, “point_of_interest”, “建立”], “附近”: “拉合尔” “html_attributions”:[]}]
在JSON.parse(thisString)之后,我通过使用params [“places”] [0] [“geometry”]得到所需的结果然后循环遍历它,但我知道当Rails有它时它不是更好的方法那里的参数很强,所以我在搜索后尝试了一些解决方案,下面是我的强参数函数
def google_places
json_params = ActionController::Parameters.new(JSON.parse(request.body.read) )
json_params.require(:google_searched_locations).permit(:icon)
end
但它会出现以下错误,
SearchesController#searchResults
中的JSON :: ParserError757:'places =%5B%7B%22geometry
的意外标记
任何人都可以让我们摆脱这种混乱,并告诉我们这里发生了什么,以及正确的方向。 在此先感谢:)
答案 0 :(得分:0)
您无需手动解析JSON参数。如果请求具有正确的格式(更具体地说是正确的mime类型头文件),Rails将自动解析参数。实际上,这样做会更慢并且使用更多内存,因为您正在进行两次相同的解析工作。
要允许参数数组,只需使用散列键和嵌套参数的允许属性数组。
def google_places
params.permit(places: [:icon, { location: [:H, :L] }])
end
如果可能,您应该将H
和L
参数更改为小写,以便您可以直接将它们映射到属性,而不会违反小写属性的ruby约定。