ユーザーがデータベースを検索できるようにするアプリケーションを作成しようとしています。検索ページのレイアウトは、検索を絞り込むためにデータベースにすでに存在するデータを表示するいくつかのドロップダウンメニューと、ユーザーが「プロジェクト名」などのキーワードを入力できるようにするテキストボックスで動作します。検索フォームに入力されたすべての情報をレールに取得して、1つの大きな検索を実行するのに問題があります。
これが私の検索レイアウトの一部です:
<%= form_tag search_path, :method => 'get' do %>
<%= hidden_field_tag :direction, params[:direction] %>
<%= hidden_field_tag :sort, params[:sort] %>
<p>
<%= text_field_tag :search, params[:search] %>
<%= submit_tag "Search Project Name", :project_name => nil %>
</p>
<p>
<%= text_field_tag :search, params[:search] %>
<%= submit_tag "Search Client", :client => nil %>
</p>
<% end %>
プロジェクトコントローラでのインデックスと検索アクションは次のとおりです。
def index
@projects = Project.all
respond_to do |format|
format.html # index.html.erb
format.json { render :json => @projects }
end
end
def search
@project_search = Project.search(params[:search]).order(sort_column + ' ' + sort_direction).paginate(:per_page => 5, :page => params[:page])
end
これが私のmodels/project.rbファイルの一部です
def self.search(search)
if search
where('project_name LIKE ?', "%#{search}%") || where('client LIKE ?', "%#{search}%")
else
scoped
end
end
ご覧のとおり、私はproject_nameまたはクライアントのいずれかを検索しようとしています。これがうまくいけば、他の分野にも広げていきます。
現時点での機能は、両方のボックスを検索しようとすると、1つが上書きされ、フィールド検索の1つだけが実行されることです。
私はRORを初めて使用するので、誰かが助けてくれることを願っています。任意の提案をいただければ幸いです。
前もって感謝します!