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



当前使用使用GETredirect_to传递数据。由于在某些情况下数据集很大,因此URI太长并且会引发Bad Request错误。

所有在线研究都说,将数据传递到身体中是一个坏主意。有没有更好的方法将数据传递给另一个控制器?

代码块

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中调用的终点是搜索结果,因此需要在重定向和传递数据之前检查结果是否为空。我从代码块

中省略了这一部分

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

update

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

  1. 在远程JSON中搜索是否可以控制它。只需传递URL中的搜索关键字,然后让Remote解决它。

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

最新更新