Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails RubyonRails的未定义方法“permit”_Ruby On Rails_Ruby_Strong Parameters - Fatal编程技术网

Ruby on rails RubyonRails的未定义方法“permit”

Ruby on rails RubyonRails的未定义方法“permit”,ruby-on-rails,ruby,strong-parameters,Ruby On Rails,Ruby,Strong Parameters,我读了很多关于stackoverflow的链接,但是没有找到解决方案,因为有一些不同。因此,我想阐明我的观点,如下所述: 我有一个指向我的控制器的ajax调用,它只有一个参数google\u searched\u locations,它基本上包含json字符串 google_searched_locations [{"geometry":{"location":{"J":31.482273,"M":74.33069999999998}},"icon":"https://maps.gst

我读了很多关于stackoverflow的链接,但是没有找到解决方案,因为有一些不同。因此,我想阐明我的观点,如下所述:

我有一个指向我的控制器的ajax调用,它只有一个参数google\u searched\u locations,它基本上包含json字符串

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","rating":4.3,"reference":"CnRhAAAA4x8yMjf9__CURWmYX6ojnpgu
-M1aL4Cvsmp6j2nKOLiqlBRlslTtPU8hUc6tJWAehCE967tW8Z623new_ivN8_PWbypr6ANDj_6AIxxGTQcwneyfHCigsHWhcdrUlcJAsQTycbHOTdmu6n8loZiU-hIQHNPqBNJRlho9fVjRfomU-BoUcdX_NGHhBFs_pxQiPZTlUD-W88o"
,"scope":"GOOGLE","types":["restaurant","food","point_of_interest","establishment"],"vicinity":"Lahore"
,"html_attributions":[]}]
我的操作包含以下代码

 def searchResults

  @restaurant = GoogleSearchedLocation.new(params_google_searched_locations)
  byebug
  if @restaurant.save!
    render json: { :status => :Ok }  
  else
      render json: { :status => :failed }
  end
end
params_google_searched_locations中的代码如下

def params_google_searched_locations
 params.require(:google_searched_locations).permit(:place_id)
 end
现在,整个ajax调用都失败了,并抛出以下错误作为响应

GoogleSearchedLocationControllersearchResults中的命名错误


有理由的解决方案将更受欢迎。提前感谢

通常,您会在父级返回哈希的参数上使用permit/require的组合,例如{user:{name:'Maria'}

但是,父级返回一个JSON字符串。因此,您要做的是解析该JSON,然后使用许可证。但是,请记住,您刚刚失去了Rails的无差别访问权限,您可以使用符号或字符串访问密钥

然而,从您的示例来看,由于JSON返回一个数组,我认为您不能使用permit

如果是杂烩,我相信你能做到

def params_谷歌搜索_位置 json=params.require:google\u搜索位置 {place\u id:JSON.parsejson.permit:place\u id} 终止


在任何情况下,您都不一定需要使用许可证。您可以自己将参数列入白名单。

我认为您应该要求使用单数,而不是复数,即参数。要求:谷歌搜索位置。许可证:地点id。但可能只是巧合。您在参数中得到了什么?您可以从中发布参数吗console@japed不,这是钥匙,他的passing@Deepak亲爱的,我只有一个参数google\u searched\u location当你给新的stackoverflow用户-1时请提供反馈我高度怀疑这是同一个错误。解析JSON不会返回字符串,所以不可能得到相同的错误。你能告诉我JSON.parsejson返回什么吗?你说我可以将参数列为白色elf.你能解释一下吗?因为据我所知,我们在rails 3的模型中使用了白名单参数,而在rails 4中我们使用了强参数。我该怎么办?permit/require方法只是帮手,它们并没有发挥任何神奇的作用。因此,在你的例子中,你可以使用params[:google\u searched\u locations][:place\u id]我认为唯一的区别是,在生产过程中,如果google_searched_locations参数没有传递给我们,它可能会向客户端发出错误提示。