Ruby on rails 如何在搜索框旁边下拉,搜索rails中选定的特定字段?

Ruby on rails 如何在搜索框旁边下拉,搜索rails中选定的特定字段?,ruby-on-rails,jruby,Ruby On Rails,Jruby,好吧,我对这个网站还不熟悉,但这就是我所拥有的: Report.rb index.html.erb 它将搜索的唯一字段是求职信和CD#字段,我需要它来搜索下拉框中选择的任何内容。顺便说一句,我正在使用js和css函数的引导程序。您的查询有3个占位符?,但只传递了一个参数“#{search}”-如果这样运行,您真正应该得到的是一个异常 ActiveRecord::PreparedStatementInvalid: wrong number of bind variables (1 for 3) .

好吧,我对这个网站还不熟悉,但这就是我所拥有的:

Report.rb index.html.erb
它将搜索的唯一字段是求职信和CD#字段,我需要它来搜索下拉框中选择的任何内容。顺便说一句,我正在使用js和css函数的引导程序。

您的查询有3个占位符
,但只传递了一个参数
“#{search}”
-如果这样运行,您真正应该得到的是一个异常

ActiveRecord::PreparedStatementInvalid: wrong number of bind variables (1 for 3) ...
此外,您的
select\u标记在表单之外,因此它根本不会传递给控制器。如果将其移动到表单中,则必须对其进行重命名(例如,重命名为
),因为文本字段已经使用了名称
搜索
。然后可以将
搜索
参数传递给搜索函数以构造查询

然而,这是不安全的,因为没有任何东西可以阻止用户通过操纵post请求传入任何其他列,并且由于您不能使用占位符作为列名,因此也存在SQL注入的危险

有很多解决方案可以构建搜索,不需要重新发明轮子。看看宝石。下面是一篇关于如何使用它的最新文章

select_tag "search", options_for_select([ "Job Letter and CD #", "Date", "Cust", "Job", "Date shipped", "Date billed", "Billed by" ], params[:search]) 

form_tag reports_path, :method => 'get' do

text_field_tag :search, params[:search], :class=> "form-search", :align => "right"

<%= submit_tag "Search", :JOBLETTER_CD_NUMBER => nil, :class => "btn btn-success", :align => "right"
def index
    @report = Report.paginate(:per_page => 1, :page => params[:page])
    @report = Report.search(params[:search]).paginate(:per_page => 1, :page => params[:page])  
    respond_to do |format|
      format.html # index.html.erb
      format.json { render :json => @views }

    end
  end
ActiveRecord::PreparedStatementInvalid: wrong number of bind variables (1 for 3) ...