选择包含许多项目的标记需要时间来渲染

时间:2016-02-08 15:06:29

标签: ruby-on-rails ruby view rendering

我的表单中包含select标记,其中包含近17k项目。

<%= f.select :company_industry_id, options_for_select(@company_industries.map{
 |c| [c.name, c.id] }, selected_key = @company.company_industry_id),
 {}, {:class => 'input_text'} %>

加载@company_industries的数据需要0.01s。

@company_industries = CompanyIndustry.select(:id, :name).order('name ASC')

但是,在f.select框中渲染它需要大约18秒(表单中没有此f.select元素,页面将以350-400ms呈现。)

如何避免这种放缓?有没有办法优化f.select元素?或者,是否有f.select的替代方案?

1 个答案:

答案 0 :(得分:4)

我建议select2

最好的方法是不立即加载数据,但当用户输入3个字母时,则会显示使用这3个字母过滤的数据。它还为您提供了搜索17k元素的好方法,以便更快地找到结果。