Ruby on Rails:在表单上搜索collection_check_boxes

时间:2017-02-21 13:47:17

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

在我的RoR应用程序中,我有一些功能,允许用户选择要发送电子邮件的联系人。我想添加此功能,以便用户可以搜索联系人。

目前,联系人会显示在UIImageView复选框中,用户可以通过这些复选框进行选择:

views/emails/form.html.erb

是否可以通过在复选框上方添加搜索栏来构建此基础,该搜索栏允许用户按名字搜索复选框?

1 个答案:

答案 0 :(得分:0)

您可以使用表单来处理不引人注目的JavaScript。

<div class="form-group">
  <!-- Form outside your main form... the REMOTE flag will tell rails 
       to prevent the default behaviour of a form make a request 
       for JS response --!>
  <%= form_tag contacts_path, remote: true, method: :get do  %>
    <%= input_tag :search %> 
    <%= button_tag "Search" %>
  <% end %>

  <div id="email-form">
    <%= form_for @email, email_path do |f| %>
      <!-- Many inputs relative with email omited--!>

      <div class="contact-list">
      </div>

      <%= f.submit 'Submit' %>
    <% end %>
</div>

让控制器/操作搜索您的联系人并将其返回给js视图...

// ContactController

def index
  respond_to do |format|
    format.html { @contacts = Contact.all }
    format.js { @contacts = Contact.find_by(firstname: params[:search]) }
  end
end

并查看操作html的动作/控制器以附加要选择的联系人

// views/contacts/index.js.erb
$(document).ready(function() {
  $('#contact-list').append("<%= collection_check_boxes :email, :contact_ids, @collection, :id, :firstname %>")
})

这是一个非常简单的例子......我不会处理重复......如果你两次搜索同样的东西......