1

美好的一天!沒有搜索結果pg_search(Rails 3.1)

我使用pg_search來實現全文搜索在我的網絡應用程序。我創建了用戶打印他的數據的表單,然後我嘗試顯示它,但結果總是空的!哪裏不對?

/views/users/index.html.erb

<%= render 'shared/search_form' %> 
<%= will_paginate %> 
    <ul class="users"> 
    <%= render @users %>  
    </ul> 
<%= will_paginate %> 

/views/shared/_search_form.erb

<% search_id_attr = :q %> 
<%= form_tag(users_path, :method => "get") do %> 
    <%= label_tag(search_id_attr, "Search for:") %> 
    <%= text_field_tag(search_id_attr) %> 
    <%= submit_tag("Search", :name => nil) %> 
<% end %> 

/controllers/users_controller.rb

class UsersController < ApplicationController 
    ... 
    def index 
    @title = "All users" 
    @users = PgSearch.multisearch(params[:q]).paginate(:page => params[:page]) 
    end 
... 
end 

UPD1:在/controllers/users_controller.rb中編輯後,我有params [:q]。現在我得到這樣的錯誤:

ActionView::Template::Error (Missing partial pg_search/documents/document with {:handlers=>[:erb, :builder, :coffee], :formats=>[:html], :locale=>[:en, :en]}. Searched in: 
    * "/Users/iUser/rails_projects_terminal/sample_app/app/views" 
): 
    6: <%= will_paginate %> 
    7: 
    8: <ul class="users"> 
    9: <%= render @users %>                          
    10: </ul> 
    11: 
    12: <%= will_paginate %> 
    app/views/users/index.html.erb:9:in `_app_views_users_index_html_erb__3107215974202561754_70174719087800' 

UPD2:我創建的空分的意見/ pg_search /文件/ _document,現在我根本沒有任何結果。

回答

2

我是pg_search的作者。

你應該把你的變量命名從@users@pg_search_documents,因爲PgSearch.multisearch總是返回類型PgSearch::Document,不User的對象。

然後你會想要做這樣的事情在你看來:

<%= render 'shared/search_form' %> 
<%= will_paginate %> 
<ul class="users"> 
    <%= @pg_search_documents.each do |pg_search_document| %> 
    <%= render pg_search_document.searchable %> 
    <%= render @users %>  
</ul> 
<%= will_paginate %> 

這是因爲multisearch是專爲跨多個模型搜索。

如果你想搜索,僅搜索User,那麼你應該使用pg_search_scope直接在User類建立一個搜索範圍。例如:

class User < ActiveRecord::Base 
    include PgSearch 
    pg_search_scope :search_by_name, :against => [:name] 
end 

User.search_by_name("ExR") # => returns an Active Record scope of `User` objects. 

讓我知道如果這不明確。我知道documentation已經變得有點大,應該簡化和組織,以便開發人員更好地理解這些微妙之處。

謝謝!

0

params[:Search]將包含您的提交按鈕的名稱。我想你的意思是params[:q]。試試看。

+0

我編輯它。現在它顯示奇怪的錯誤。請在後期看更新,請! – ExiRe 2012-01-06 15:07:20

+0

那麼?你沒有「文件/文件」視圖。修復 – 2012-01-06 15:11:50

+0

我創建了'pg_search/documents/document'視圖。那個觀點裏面應該包含什麼內容? – ExiRe 2012-01-06 15:17:41