2013-05-27 26 views
14

Tôi có biểu mẫu tìm kiếm trong tiêu đề của ứng dụng và tôi muốn sử dụng biểu mẫu tìm kiếm này để tìm kiếm qua nhiều mô hình trong ứng dụng.Tìm kiếm nhiều mô hình cùng lúc với Ransack

Ví dụ: yêu cầu như /search?q=rails sẽ kích hoạt tìm kiếm thông qua nhiều mô hình như Work, Project, User và các thuộc tính được xác định của chúng. Tôi muốn sử dụng Ransack vì tôi đã sử dụng nó trên mô hình Work trong một khu vực khác của ứng dụng.

Tôi nghĩ mình chưa hiểu rõ Ransack và tài liệu luôn chỉ ra rằng bạn phải xác định @q = MyModel.search(params[:q]) để sử dụng nó ở dạng search_form_for @q. Có cách nào mà bạn không phải xác định trước một mô hình cụ thể không? Và chỉ cần nhập tên tham số như search_form_for :q?

Trả lời

32

Được rồi, sau khi đặt câu hỏi, câu trả lời xuất hiện trong đầu tôi.

Thay vì search_form_for helper Tôi bây giờ chỉ sử dụng form_tag helper theo cách sau:

<%= form_tag search_path, method: :get do %> 
    <%= text_field_tag :q, nil %> 
<%= end %> 

và trong hành động tìm kiếm tôi chỉ làm:

q = params[:q] 
@works = Work.search(name_cont: q).result 
@projects = Project.search(name_cont: q).result 
@users = User.search(name_cont: q).result 

này làm việc cho tôi . Tôi hy vọng điều này cũng giúp người khác.

+3

Giải pháp tuyệt vời - Cảm ơn bạn đã chia sẻ! – scarver2

+1

Bạn đang rất hoan nghênh. – Daniel

Các vấn đề liên quan