Searchable を使用して、ユーザーが作成した連絡先を検索しています。これまでのところ、問題なく動作しています。ここで、「購入者」タイプの連絡先である連絡先を検索するなど、フィルタリングを実装したいと考えています。このためには、まずユーザーが選択ボックスから「連絡先タイプ」を選択し、連絡先を名前で検索する必要があります。
私の問題は、検索結果が表示されますが、連絡先の種類でフィルタリングされていないことです。「Contact_Type」に「Buyer」、名前に「vim」を選択すると、vim で検索結果が表示されますが、Contact_Type でフィルタリングされません。
ContactController での検索方法:
def search = {
def query = params.q
def filterContact = params.filter
if(query && filterContact){
def srchResults = searchableService.search(query, filterContact)
render(view: "list",
model: [contactInstanceList: srchResults.results,
contactInstanceTotal:srchResults.total])
}
else{
render "not record found";
}
}
セレクトボックス
<g:select style=" background:transparent;border:none;margin-bottom:10px;color:#787878;" from="${com.vproc.enquiry.ContactType?.values()}"
noSelection="['':'Search By']" value="${contactInstance?.contactType?.values()}" name="filter" />
検索結果にリダイレクトする JS メソッド:
<script type="text/javascript">
function showContact(id){
document.location.href ='/VProcureFinal/contact/search?q=' + $("#"+ id).val()
+ "&filter=" + $("#filter").val();
}
</script>
名前が「Vim」で contact_type が「Buyer」の連絡先を作成するとします。contact_type="Seller" と name="Vim' で検索すると、まだ検索結果が表示されますが、これは表示されるべきではありません。