Select 包含很多项目的标签需要时间来呈现
Select tag with many items takes time to render
我有一个带有 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.01 秒。
@company_industries = CompanyIndustry.select(:id, :name).order('name ASC')
但是,在 f.select
框中呈现它需要大约 18 秒(如果表单中没有此 f.select
元素,页面将在 350-400 毫秒内呈现)。
如何避免这种减速?有没有办法优化 f.select
元素?或者,是否有 f.select
的替代方案?
我建议select2
最好的方法是不要立即加载数据,而是当用户输入 3 个字母时,然后显示用这 3 个字母过滤的数据。它还为您提供了搜索 17k 元素的好方法,以更快地找到结果。
我有一个带有 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.01 秒。
@company_industries = CompanyIndustry.select(:id, :name).order('name ASC')
但是,在 f.select
框中呈现它需要大约 18 秒(如果表单中没有此 f.select
元素,页面将在 350-400 毫秒内呈现)。
如何避免这种减速?有没有办法优化 f.select
元素?或者,是否有 f.select
的替代方案?
我建议select2
最好的方法是不要立即加载数据,而是当用户输入 3 个字母时,然后显示用这 3 个字母过滤的数据。它还为您提供了搜索 17k 元素的好方法,以更快地找到结果。