当前使用使用GET
的redirect_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个路由进行搜索操作是太慷慨了。我有两个建议:
在远程JSON中搜索是否可以控制它。只需传递URL中的搜索关键字,然后让Remote解决它。
如果您无法控制远程JSON,请使用AJAX调用进行搜索。在您的
search_results#index
中,对您的search#new
JSON路线之类的东西进行了Ajax调用,并获取了过滤后的结果。