目前使用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
中调用的结束点是搜索结果,因此需要在重定向和传递数据之前检查结果是否为空。我从代码块中省略了这部分
答案 0 :(得分:1)
将这些代码放在create
方法中的任何理由?从我的角度来看,你的代码并没有真正创造任何东西。它只是从远程URL获取一些JSON数据并重定向到search_results#index
。为什么不直接在search_results#index
中加载JSON?
<强>更新强>
使用超过3条路线进行搜索操作太慷慨了。我有两个建议:
如果可以控制,请在远程JSON中搜索。只需在URL中传递搜索关键字,然后让远程解析它。
如果无法控制远程JSON,请使用AJAX调用进行搜索。在search_results#index
中,对search#new
JSON路由进行AJAX调用并获取过滤后的结果。