我的表单中包含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
的替代方案?
答案 0 :(得分:4)
我建议select2
最好的方法是不立即加载数据,但当用户输入3个字母时,则会显示使用这3个字母过滤的数据。它还为您提供了搜索17k元素的好方法,以便更快地找到结果。