Ruby Dropdown根据第一个字符进行选择

时间:2018-06-21 15:48:10

标签: ruby ruby-on-rails-4

我有一个下拉菜单,希望我的用户在输入时开始选择。输入的第一个字符应在品牌中找到第一个字符。问题在于,它会在品牌中的任何位置搜索字符,而不会像用户希望的那样从第一个字符开始。例如...如果您键入“ r”,您将得到:阿尔法•罗密欧,阿斯顿·马丁,雪佛兰,克莱斯勒等...早在获得雷诺之前。 我从数据库创建列表。我的haml看起来像这样:

 .field-row
   = render partial:'/makes/make_select', locals:{id:'make_id'}

将其称为_make_select.html.haml

 = collection_select :vehicle, id, Make.all.order(:name), :id, :name, {prompt:true}, {title:'Select Make', class:'make-select', 'data-allow-empty' => 'no'}

我似乎找不到在Ruby上显示给我collection_select有效选项的任何文档。也许有一个允许这样做的选项? 我读过我可能需要使用jQuery来完成此任务。只是想弄清楚在haml中是否有一个简单的选项可能有更简单的方法。 让我知道您还有其他想看的东西吗? 谢谢!

2 个答案:

答案 0 :(得分:0)

您可以向控制器添加逻辑,并使用SQL查询进行检查,这取决于您使用的数据库。

@makes = Make.where('name LIKE ?', "#{params[character]}%")

查看有关模式匹配的MySql文档 https://dev.mysql.com/doc/refman/8.0/en/pattern-matching.html

答案 1 :(得分:0)

您不应在视图内添加Model查询,而应添加它。

在上述情况下,建议您使用https://github.com/argerim/select2-rails它非常强大,并且已经拥有所需的功能。