Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.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 Rails请求Uri太大_Ruby On Rails_Csv_Heroku_Uri - Fatal编程技术网

Ruby on rails Rails请求Uri太大

Ruby on rails Rails请求Uri太大,ruby-on-rails,csv,heroku,uri,Ruby On Rails,Csv,Heroku,Uri,我在我的应用程序中有一种方法,它可以接受数百个用户联系人电话号码的CSV,长度不同,但最长可达数千个字符。尝试按以下方式执行该方法时: localhost:3000/getActivatedFriends/phoneNum1、phoneNum2、phoneNum3…phoneNum350…等 出现以下错误: Request-URI Too Large WEBrick::HTTPStatus::RequestURITooLarge 在我的个人设备上,CSV中的字符数为2868。我怎样才能绕过这

我在我的应用程序中有一种方法,它可以接受数百个用户联系人电话号码的CSV,长度不同,但最长可达数千个字符。尝试按以下方式执行该方法时:

localhost:3000/getActivatedFriends/phoneNum1、phoneNum2、phoneNum3…phoneNum350…等

出现以下错误:

Request-URI Too Large

WEBrick::HTTPStatus::RequestURITooLarge
在我的个人设备上,CSV中的字符数为2868。我怎样才能绕过这个限制,或者在localhost和Heroku中设置为无限长

请求控制器操作: (请忽略可能的SQL注入,因为这只是在开发中)

铁路路线:


改为使用POST请求,这将解决问题。

正如您通过定义的路径所看到的:
get'/getActivatedFriends/:friends\u phone\u number\u csv',to:'requests\getActivatedFriends',via:**'POST'**,约束:{friends\u phone\u number\u csv:/([0-9]+,?)+/}
我已经将其定义为post请求……这不是转发给post控制器的get请求吗?我认为您遇到的问题与get请求的最大大小有关。大多数浏览器(和服务器)都有一个最大url长度,如果内存可用的话,这是IE实现的2048。我如何实现这个?我可以捆绑…?为什么你不能这样做:
post'/getActivatedFriends/:friends\u phone\u number\u csv'…
如果我似乎在向这个方向推进,很抱歉,但在这个实例中,你真的应该使用post而不是get。问题是我需要它是get,因为我需要在执行查询后检索数据
def getActivatedFriends
        @results = User.find_by_sql("SELECT 
                                                a.id
                                             ,  a.username
                                             ,  a.phoneNumber
                                             FROM users a
                                             WHERE phoneNumber in (" + params[:friends_phone_number_csv].to_s + ") and
                                                   removed = 0 and
                                                   is_user = 1;")

        respond_to do |format|
            format.html
            format.json { render json: { friends_match: @results }}
        end         
    end
get '/getActivatedFriends/:friends_phone_number_csv',
  to: 'requests#getActivatedFriends', via: 'post',
  constraints: { friends_phone_number_csv: /([0-9]+,?)+/ }