繁体   English   中英

Rails中带有搜索按钮的下拉列表

[英]Drop Down List With Search Button In Rails

我有一个具有以下集合的客户模型:

@doctors =  Customer.joins(:user).where(users: {role: User.roles[:doctor]}) 

它将用户角色为“医生”的用户表和客户表连接起来。

当前,在“客户索引”视图中,我正在列出所有客户,现在,我想使用带有搜索按钮的下拉列表添加搜索过滤器,该列表包含Doctors的名字。 如果我按下搜索按钮,它应该只显示由下拉列表中选择的特定医生创建的客户。

1.如何通过搜索按钮添加仅显示医生名字的下拉列表?


2.当我从下拉列表中选择特定医生并单击搜索按钮时,如何过滤我的客户清单?


 <div class="btn-group"> <button type="button" class="btn btn-success btn-sm"><b>Search By Dr.</b></button> <button type="button" class="btn btn-success btn-sm" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> <span class="caret"></span> <span class="sr-only">Toggle Dropdown</span> </button> <ul class="dropdown-menu"> <li><a href="#">List All Customers</a></li> <% @practices.each do |practice| %> <li><a href="#">Dr.<%= practice.firstname %></a></li> <% end %> </ul> </div> 

上面是我当前正在使用的代码,但这是Rails的正确方法吗?

答案1:

您可以使用JS来完成此任务。我建议您对搜索栏Select2Chosen使用以下jquery插件之一。

我对select2的个人经历令人印象深刻。

它也通过ajax和缓存加载数据,以避免重复调用。 它的GUI给ua谷歌一样的感觉。 阅读其文档并使用它。

答案2:

select2还为您提供了诸如change之类的事件,以便您可以再次调用ajax来加载已过滤的客户。

  1. 您可以在rails视图中简单地使用以下标记:

    <%= select("doctor", "firstname", @doctors.all.collect(&:firstname)) %>

  2. 然后在您的控制器中,您将得到以下内容:

    def index if params[:doctor] @customers = Customer.joins(:user).where(users: {role: User.roles[:doctor]}, firstname: params[:doctor][:firstname].downcase) else @customers = Customer.all end end

您可以执行此auto_complete导轨。 看看http://railscasts.com/episodes/102-auto-complete-association

谢谢

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM