0

さて、フォームを送信すると、これらはブラウザを介して渡されるパラメーターです。

{"Search"=>"Job Letter and CD #",
"utf8"=>"✓",
"search"=>"g",
"commit"=>"Search"}

基本的に私がする必要があるのは、私のモデルテストで最初のパラメータ「検索」です。元:

if Search == "Job Letter and CD #"
..do stuff..
elsif Search == "something else"
..do different stuff..
else
..do something..

私はこれについて頭を悩ませてきましたが、それを理解することはできません。私のルビーコードは以下のとおりです。スペースを節約するために、いくつかの「端」などを切り取る場合があります。

index.html.erb

<form class="well form-search right">
<%= 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, :DATE, :CUST, :JOB, :DATE_SHIPPED, :DATE_BILLED, :billed_by ] => nil, :class => "btn btn-success", :align => "right" %>

report.rb モデル

      def self.search(search)  
if Search == 'Job Letter and CD #'
  where('JOBLETTER_CD_NUMBER LIKE ?', "%#{search}%") 
elsif Search == 'Date'
  where('DATE ?', "%#{search}%")
else
  scoped  
end
end  
4

1 に答える 1

1

モデルに存在する検索機能に2つのパラメーターを渡す必要があると思います

def self.search(what_to_search,search_string)
  if what_to_search == 'Job Letter and CD #'
     where('JOBLETTER_CD_NUMBER LIKE ?', "%#{search_string}%") 
  elsif what_to_search == 'Date'
     where('DATE ?', "%#{search_string}%")
  else
      scoped  
  end
end

そして、この方法でコントローラーから検索を呼び出します

Search.search(params[:Search],params[:search])
于 2012-08-09T14:59:03.270 に答える