키워드 검색과 탭 검색을 전환하고 싶습니다!
구현된 검색 기능
전제 조건
Rails 4.2
경로search_products GET /products/search(.:format) products#search
POST /products/search(.:format) products#search
키워드 검색 정보
이런 느낌.
태그 검색 정보
사용한gem 정보
Ransack 1.8.8
Ransack이 편하대요.
Ransack을 사용하기 전에 다음 Where 메서드와 LINE 등을 사용하여 키워드 검색을 수행했습니다.
product.rb def self.search(keyword)
if keyword
Product.where(['name LIKE?', "%#{keyword}%"])
else
Product.all
end
end
하지만 랜스백이라는 젬을 사용하면 단 한 문장만 쓰면 가능하다.gem 'ransack'
product_controller.rb def search
# キーワード検索
@search = Product.ransack(params[:q])
@results = @search.result.order("created_at DESC").page(params[:page]).per(10)
# タグ検索
@tag_search = Product.tagged_with(params[:search])
end
ransack 이 방법과 매개 변수의 지정을 통해 키워드 검색 결과를 되돌려 주는 것 같습니다.
http://nekorails.hatenablog.com/entry/2017/05/31/173925
↑ 보살핌을 받은 사이트.
태그 검색 중,taggedwith 이 방법 + 검색 라벨을 매개 변수로 사용하면 대상 라벨의 트위터를 잘 얻을 수 있습니다.
search.html.erb<div class="container">
<div class="row">
<div class="col s12">
<ul class="tabs">
<!--materialize.cssを用いてキーワード検索とタグ検索を切り替え-->
<li class="tab col s6"><a href="#test1">キーワード検索</a></li>
<li class="tab col s6"><a href="#test2">タグ検索</a></li>
</ul>
<!--キーワード検索-->
<div id ="test1" >
<!--Ransackを使うとsearch_form_forを使える!-->
<%= search_form_for @search,url: search_products_path do |f| %>
<div class="form-group">
<i class="material-icons prefix">search</i>
<%= f.search_field :name_cont, class: 'form-control', placeholder: 'キーワードで検索' %>
<%= f.submit 'Search',:class=> "btn waves-effect waves-light" %>
</div>
<% end %>
<!--キーワード検索の結果を表示-->
<div class="col s6">
<div class="card" id = "test1">
<div class="blue-grey darken-1">
<ul class="card">
<% @results.each do |result| %>
<%= render 'products/product' , a_product: result %>
</ul>
<% end %>
</div>
</div>
</div>
</div>
</div>
<!--タグ検索-->
<div id ="test2">
<div class="form-group">
<i class="material-icons prefix">search</i>
<!--タグはform_tagを用いて-->
<%= form_tag({action: 'search', method: "get"}) do %>
<%= text_field_tag :search %>
<%= submit_tag 'Search', :class => "btn waves-effect waves-light" %>
<% end %>
</div>
<!--タグ検索の結果を表示-->
<div class="col s6">
<div class="card" id = "test1">
<div class="blue-grey darken-1">
<ul class="card">
<% @tag_search.each do |result| %>
<%= render 'products/product' , a_product: result %>
</ul>
<% end %>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
Ransack search 기준form_for+@search를 사용할 수 있습니다(키워드가 포함된 매개변수의 인스턴스).form_개념적으로 for에 가깝다.
태그 검색에서form태그를 사용했습니다.이것은 라벨 이름만 포함하면 충분하다.(특별히 새로운 실례를 준비하여 form for에서 던지지 않아도 되죠...)[혼잣말]
끝맺다
form_for의 매개 변수 실례,find,where 등 방법을 얻을 때의 유형에 대한 이해가 부족하여 많은 시간이 걸렸다.매개 변수와 방법을 다시 배워야 할지도 모른다.
Reference
이 문제에 관하여(키워드 검색과 탭 검색을 전환하고 싶습니다!), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/rockguitar67/items/c889159c7666ecdff850
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
search_products GET /products/search(.:format) products#search
POST /products/search(.:format) products#search
이런 느낌.
태그 검색 정보
사용한gem 정보
Ransack 1.8.8
Ransack이 편하대요.
Ransack을 사용하기 전에 다음 Where 메서드와 LINE 등을 사용하여 키워드 검색을 수행했습니다.
product.rb def self.search(keyword)
if keyword
Product.where(['name LIKE?', "%#{keyword}%"])
else
Product.all
end
end
하지만 랜스백이라는 젬을 사용하면 단 한 문장만 쓰면 가능하다.gem 'ransack'
product_controller.rb def search
# キーワード検索
@search = Product.ransack(params[:q])
@results = @search.result.order("created_at DESC").page(params[:page]).per(10)
# タグ検索
@tag_search = Product.tagged_with(params[:search])
end
ransack 이 방법과 매개 변수의 지정을 통해 키워드 검색 결과를 되돌려 주는 것 같습니다.
http://nekorails.hatenablog.com/entry/2017/05/31/173925
↑ 보살핌을 받은 사이트.
태그 검색 중,taggedwith 이 방법 + 검색 라벨을 매개 변수로 사용하면 대상 라벨의 트위터를 잘 얻을 수 있습니다.
search.html.erb<div class="container">
<div class="row">
<div class="col s12">
<ul class="tabs">
<!--materialize.cssを用いてキーワード検索とタグ検索を切り替え-->
<li class="tab col s6"><a href="#test1">キーワード検索</a></li>
<li class="tab col s6"><a href="#test2">タグ検索</a></li>
</ul>
<!--キーワード検索-->
<div id ="test1" >
<!--Ransackを使うとsearch_form_forを使える!-->
<%= search_form_for @search,url: search_products_path do |f| %>
<div class="form-group">
<i class="material-icons prefix">search</i>
<%= f.search_field :name_cont, class: 'form-control', placeholder: 'キーワードで検索' %>
<%= f.submit 'Search',:class=> "btn waves-effect waves-light" %>
</div>
<% end %>
<!--キーワード検索の結果を表示-->
<div class="col s6">
<div class="card" id = "test1">
<div class="blue-grey darken-1">
<ul class="card">
<% @results.each do |result| %>
<%= render 'products/product' , a_product: result %>
</ul>
<% end %>
</div>
</div>
</div>
</div>
</div>
<!--タグ検索-->
<div id ="test2">
<div class="form-group">
<i class="material-icons prefix">search</i>
<!--タグはform_tagを用いて-->
<%= form_tag({action: 'search', method: "get"}) do %>
<%= text_field_tag :search %>
<%= submit_tag 'Search', :class => "btn waves-effect waves-light" %>
<% end %>
</div>
<!--タグ検索の結果を表示-->
<div class="col s6">
<div class="card" id = "test1">
<div class="blue-grey darken-1">
<ul class="card">
<% @tag_search.each do |result| %>
<%= render 'products/product' , a_product: result %>
</ul>
<% end %>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
Ransack search 기준form_for+@search를 사용할 수 있습니다(키워드가 포함된 매개변수의 인스턴스).form_개념적으로 for에 가깝다.
태그 검색에서form태그를 사용했습니다.이것은 라벨 이름만 포함하면 충분하다.(특별히 새로운 실례를 준비하여 form for에서 던지지 않아도 되죠...)[혼잣말]
끝맺다
form_for의 매개 변수 실례,find,where 등 방법을 얻을 때의 유형에 대한 이해가 부족하여 많은 시간이 걸렸다.매개 변수와 방법을 다시 배워야 할지도 모른다.
Reference
이 문제에 관하여(키워드 검색과 탭 검색을 전환하고 싶습니다!), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/rockguitar67/items/c889159c7666ecdff850
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
def self.search(keyword)
if keyword
Product.where(['name LIKE?', "%#{keyword}%"])
else
Product.all
end
end
gem 'ransack'
def search
# キーワード検索
@search = Product.ransack(params[:q])
@results = @search.result.order("created_at DESC").page(params[:page]).per(10)
# タグ検索
@tag_search = Product.tagged_with(params[:search])
end
<div class="container">
<div class="row">
<div class="col s12">
<ul class="tabs">
<!--materialize.cssを用いてキーワード検索とタグ検索を切り替え-->
<li class="tab col s6"><a href="#test1">キーワード検索</a></li>
<li class="tab col s6"><a href="#test2">タグ検索</a></li>
</ul>
<!--キーワード検索-->
<div id ="test1" >
<!--Ransackを使うとsearch_form_forを使える!-->
<%= search_form_for @search,url: search_products_path do |f| %>
<div class="form-group">
<i class="material-icons prefix">search</i>
<%= f.search_field :name_cont, class: 'form-control', placeholder: 'キーワードで検索' %>
<%= f.submit 'Search',:class=> "btn waves-effect waves-light" %>
</div>
<% end %>
<!--キーワード検索の結果を表示-->
<div class="col s6">
<div class="card" id = "test1">
<div class="blue-grey darken-1">
<ul class="card">
<% @results.each do |result| %>
<%= render 'products/product' , a_product: result %>
</ul>
<% end %>
</div>
</div>
</div>
</div>
</div>
<!--タグ検索-->
<div id ="test2">
<div class="form-group">
<i class="material-icons prefix">search</i>
<!--タグはform_tagを用いて-->
<%= form_tag({action: 'search', method: "get"}) do %>
<%= text_field_tag :search %>
<%= submit_tag 'Search', :class => "btn waves-effect waves-light" %>
<% end %>
</div>
<!--タグ検索の結果を表示-->
<div class="col s6">
<div class="card" id = "test1">
<div class="blue-grey darken-1">
<ul class="card">
<% @tag_search.each do |result| %>
<%= render 'products/product' , a_product: result %>
</ul>
<% end %>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
form_for의 매개 변수 실례,find,where 등 방법을 얻을 때의 유형에 대한 이해가 부족하여 많은 시간이 걸렸다.매개 변수와 방법을 다시 배워야 할지도 모른다.
Reference
이 문제에 관하여(키워드 검색과 탭 검색을 전환하고 싶습니다!), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/rockguitar67/items/c889159c7666ecdff850텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)