gpt4 book ai didi

ruby-on-rails - pg_search 使用一个文本字段和一个类别选择类型字段

转载 作者:行者123 更新时间:2023-11-29 12:00:57 24 4
gpt4 key购买 nike

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

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 %>

我收到这个错误:

HomeController 中的 ArgumentError#index 参数数量错误(1 对 2)

...

请求

参数:

{"utf8"=>"✓","query"=>"test","search_by_category"=>{"category_id"=>"2"},"commit"=>"Search"}

我知道问题出在这一行:

@contact_infos = ContactInfo.search_by_category(params[:query])

但我不确定如何从 View (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

在 Controller 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

在 View 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 %>
...

关于ruby-on-rails - pg_search 使用一个文本字段和一个类别选择类型字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10889276/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com