下拉列表与Rails中的搜索按钮

时间:2015-09-02 08:37:41

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-4

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

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

连接用户表和客户表,其中用户角色为" doctor"。

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

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>
&#13;
&#13;
&#13;

以上是我目前正在使用的代码,但它是正确的Rails方式吗?

3 个答案:

答案 0 :(得分:2)

答案1:

您可以使用JS执行此任务我建议您使用其中一个jquery插件用于搜索栏Select2Chosen

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

它还通过ajax和缓存加载数据,以避免重复调用。它的图形用户界面给你一种类似Google的感觉阅读其文档并使用它。

答案2:

select2也会给你change之类的事件,所以你可以再次调用ajax来加载过滤客户。

答案 1 :(得分:1)

  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

答案 2 :(得分:1)

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

由于