Ruby on rails 如何在搜索框旁边下拉,搜索rails中选定的特定字段?
好吧,我对这个网站还不熟悉,但这就是我所拥有的: Report.rb index.html.erbRuby 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) .
它将搜索的唯一字段是求职信和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) ...