【问题标题】:Drop Down List With Search Button In RailsRails 中带有搜索按钮的下拉列表
【发布时间】:2015-09-02 08:37:40
【问题描述】:

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

@doctors =  Customer.joins(:user).where(users: {role: User.roles[: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>

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

【问题讨论】:

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


    【解决方案1】:

    答案 1:

    你可以使用 JS 来完成这项任务我建议你使用这些 jquery 插件之一来搜索栏 Select2Chosen

    我对 select2 的个人体验令人印象深刻。

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

    答案 2:

    select2 还给你像change 这样的事件,这样你就可以进行另一个 ajax 调用来加载过滤的客户。

    【讨论】:

    • 感谢您的回复,但我必须使用纯 ruby​​ on rails 本身来实现它。
    【解决方案2】:
    1. 您可以在 Rails 视图中简单地使用以下标签:

      &lt;%= select("doctor", "firstname", @doctors.all.collect(&amp;:firstname)) %&gt;

    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

    【讨论】:

    • @doctors = Customer.joins(:user).where(users: {role: User.roles[:doctor]}) 现在要做什么,我不明白 rails 指南。我只想列出所有医生 :firstname 作为下拉列表项,然后搜索或选择任何下拉项必须显示由该医生 ID 创建的所有客户。
    • 那个链接更清楚了吗? howilearnedrails.wordpress.com/2013/12/18/… 我试图让您了解它是如何工作的,而不是为您编写代码:P
    • 谢谢,我还是个初学者,我还是很困惑。我需要带有医生名字的下拉菜单。单击它必须过滤该特定医生下的客户。
    【解决方案3】:

    你可以这样做 auto_complete rails。看看 http://railscasts.com/episodes/102-auto-complete-association

    谢谢

    【讨论】:

      猜你喜欢
      • 2022-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多