【问题标题】:Select tag with many items takes time to render选择包含许多项目的标签需要时间来呈现
【发布时间】:2016-02-08 15:06:29
【问题描述】:

我有一个带有 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 有什么替代品吗?

【问题讨论】:

  • 地球上谁是拥有 17K 项的选择的所需用户
  • 它不适合显示。
  • @mudasobwa 我知道我知道......但是,无论如何,客户只是想要它。
  • 客户端错误。他们不知道自己真正想要什么。

标签: ruby-on-rails ruby view rendering


【解决方案1】:

我建议select2

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

【讨论】:

  • 谢谢@Nermin,这听起来确实是解决这个问题的最佳选择。
猜你喜欢
  • 2016-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-11
  • 1970-01-01
  • 2017-05-18
  • 2018-07-27
相关资源
最近更新 更多