如何在Rails中的控制器之间传递大数据集

时间:2017-02-14 22:04:36

标签: ruby-on-rails

目前使用redirect_to使用GET传递检索到的数据。由于在某些情况下数据集很大,因此URI太长并导致Bad Request错误。

所有在线研究表明,在GET体内传递数据是一个坏主意。有没有更好的方法将数据传递给另一个控制器?

代码阻止

def create
    response_body = http_get('/data/I/want')
    parsed_result = JSON.parse(response_body)
    check_response(parsed_result)
    redirect_to controller: :search_results, action: :index, results: parsed_result
end
create中调用的

结束点是搜索结果,因此需要在重定向和传递数据之前检查结果是否为空。我从代码块中省略了这部分

1 个答案:

答案 0 :(得分:1)

将这些代码放在create方法中的任何理由?从我的角度来看,你的代码并没有真正创造任何东西。它只是从远程URL获取一些JSON数据并重定向到search_results#index。为什么不直接在search_results#index中加载JSON?

<强>更新

使用超过3条路线进行搜索操作太慷慨了。我有两个建议:

  1. 如果可以控制,请在远程JSON中搜索。只需在URL中传递搜索关键字,然后让远程解析它。

  2. 如果无法控制远程JSON,请使用AJAX调用进行搜索。在search_results#index中,对search#new JSON路由进行AJAX调用并获取过滤后的结果。