[英]pg_search using one text field and one category select-type field
Ruby on Rails新手。 我正在嘗試使用pg_search gem,但是遇到了一些困難(是的,我正在看文檔)。 我想要一個同時具有文本字段和選擇字段(類別)的搜索表單。 這是我到目前為止的代碼:
contact_info.rb
class ContactInfo < ActiveRecord::Base
...
include PgSearch
pg_search_scope :search_by_category, (lambda do |category, query|
raise ArgumentError unless [:prev, :cat].include?(category)
{
:against => category,
:query => query
}
end
end
home_controller.rb
class HomeController < ApplicationController
def index
@contact_infos = ContactInfo.search_by_category(params[:query])
respond_to do |format|
format.html # index.html.erb
format.json { render json: @contact_infos }
end
end
家\\ index.html.erb
<%= form_for :search_by_category, :url => {:controller => 'home', :action => 'index'},
:html => {:method => 'get'} do |f| %>
<%= text_field_tag :query %>
<%= f.label :category_id, "Category" %>
<%= f.collection_select :category_id, Category.all,
:id, :name,
{:prompt => 'All'} %>
<br/>
<%= f.submit "Search" %>
<% end %>
我收到此錯誤:
ArgumentError in HomeController#index wrong number of arguments (1 for 2)
...
請求
參數:
{"utf8"=>"✓","query"=>"test","search_by_category"=>{"category_id"=>"2"},"commit"=>"Search"}
我了解問題出在這一行:
@contact_infos = ContactInfo.search_by_category(params[:query])
但我不確定如何從視圖(home \\ index.html.erb)傳遞兩個變量。
謝謝!
好的-我知道了。 如果可以幫助某人...
在模型contact_info.rb中
class ContactInfo < ActiveRecord::Base
include PgSearch
...
pg_search_scope :search_by_category, :against => :previous_value
scope :in_category, lambda { |category_id|
where(:category_id => category_id)
}
end
在控制器中home_controller.rb
class HomeController < ApplicationController
def index
if params[:search_by_category].nil?
@contact_infos = ContactInfo.search(params[:query])
else
tmp = params[:search_by_category]
@contact_infos = ContactInfo.search_by_category(params[:query]).in_category(tmp[:category_id])
respond_to do |format|
format.html # index.html.erb
format.json { render json: @contact_infos }
end
end
end
end
在視圖home \\ index.html.erb中
...
<%= form_for :search_by_category, :url => {:controller => 'home', :action => 'index'}, :html => {:method => 'get'} do |f| %>
<%= text_field_tag :query %>
<%= f.label :category_id, "Category" %>
<%= f.collection_select :category_id, Category.all,
:id, :name,
{:prompt => 'All'} %>
<br/>
<%= f.submit "Search" %>
<% end %>
...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.