Rails ransack 검색 기능 사용
개시하다
ransack을 사용하여 검색 기능을 실현합니다.
ransack의 코드는 매우 적고 복잡한 검색 기능을 간단하게 제작할 수 있어 매우 편리하다.
이 글https://qiita.com/nakanishi03/items/2a6dbd72f9793b7e0ce4
라는 후속 보도를 했다.당신도 한번 보셨다면 저는 더욱 깊이 이해할 것입니다.
읽을 수 있었으면 좋겠어요. 즐거웠을 거예요!!!힘이 되다!!!
ransack 설치
Gemfile에 ransack, bundle install을 추가합니다.
Gemfilegem 'ransack'
단말기bundle install
matcher 목록
ransack에서 만든 폼에는 특수한 검색 일치 키워드(이하 Marcher)가 존재합니다.
나는 그 목록의 일부분을 총결하였으니 참고하시오.
matcher
뜻
*_eq
대등
*_not_eq
같지 않다
*_in
일치하는 그룹의 임의의 값
*_lteq
이하
*_gteq
이상
*_start
~ 로 시작하다
모든 명세서를 참조하고 싶은 사람은 아래를 보세요.
https://github.com/activerecord-hackery/ransack/blob/master/lib/ransack/locale/en.yml#L15
창 만들기
이번에는 ① 정렬 ② 이름 검색 ③ 가격 검색 ④ 상태 검색 ⑤ 발송 버튼
의 5부 구성.
학급 명칭 등은 마음대로 바꾸고 취향에 따라 결정하세요..detail_search
= search_form_for(@q,url: searches_detail_search_path) do |f|
.detail_search_sort
= f.select( :sorts, { '並び替え': 'id desc', '価格の安い順': 'price asc', '価格の高い順': 'price desc', '出品の古い順': 'updated_at asc', '出品の新しい順': 'updated_at desc' } , { onchange: 'this.form.submit()'} )
.detail_search_form
.detail_search__title
%h3 詳細検索
.detail_search__group
.detail_search__group--label
= fa_icon "search"
%p キーワードを追加する
= f.search_field :name_cont, placeholder: "例)値下げ"
.detail_search__group
.detail_search__group--label
= fa_icon "search"
%p 価格
.detail_search__group--forms
= f.search_field :price_gteq, placeholder: "¥ Min"
%p 〜
= f.search_field :price_lteq, placeholder: "¥ Max"
.detail_search__group
.detail_search__group--label
= fa_icon "search"
%p 商品の状態
.detail_search__group--checkbox
%label
%input{type: "checkbox"}
= 'すべて'
.detail_search__group--checkbox
%label
= f.check_box :state_in, '1', nil
= '新品、未使用'
.detail_search__group--checkbox
%label
= f.check_box :state_in, '2', nil
= '未使用に近い'
.detail_search__btns
.detail_search__btn--grey
= link_to "クリア", "/searches",type: "button"
= f.submit "完了"
이런 느낌이에요.
입력한 값은 searches#detail-입니다.검색에 보내도록 설정합니다.여기도 적당히 바꿔주세요.
컨트롤러 설정
searches_controller.rbclass SearchesController < ApplicationController
before_action :set_ransack
def detail_search
@search_product = Product.ransack(params[:q])
@products = @search_product.result.page(params[:page])
end
private
def set_ransack
@q = Product.ransack(params[:q])
end
end
이 정도면 됐어.
params의 값은 산열 형식으로 발송됩니다.
만약 가격을 잘 얻지 못한다면, 가격을 받아들이는 방법을 바꾸어 보세요.
그것을 실례 변수에 대입하면 된다.
검색 결과 표시
searches/detail_search.html.haml
以下はあくまで一例です。
適宜変更してください。
= render 'shared/header'
= render 'shared/sell-btn'
.search
.search-container
.search-left
= render 'searches/form-bar'
.search-right
%section.items-box-container
-if @search.present?
%h2.search-result-head
=@search
%span.search-result-head-text
の検索結果
.search-result-number
="1-#{@products.count}件表示"
-else
%h2.search-result-nil
検索結果
.search-result-number
="1-#{@products.count}件表示"
.items-box-content
= render @products
= render 'shared/footer'
0~600엔으로 검색해 봤어요.
잘했네.
끝맺다
간단하네.
혹시 모르는 게 있으면 댓글로 대답해 주세요!!
Reference
이 문제에 관하여(Rails ransack 검색 기능 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/nakanishi03/items/2fbcc8ba06b336291321
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Gemfile에 ransack, bundle install을 추가합니다.
Gemfile
gem 'ransack'
단말기bundle install
matcher 목록
ransack에서 만든 폼에는 특수한 검색 일치 키워드(이하 Marcher)가 존재합니다.
나는 그 목록의 일부분을 총결하였으니 참고하시오.
matcher
뜻
*_eq
대등
*_not_eq
같지 않다
*_in
일치하는 그룹의 임의의 값
*_lteq
이하
*_gteq
이상
*_start
~ 로 시작하다
모든 명세서를 참조하고 싶은 사람은 아래를 보세요.
https://github.com/activerecord-hackery/ransack/blob/master/lib/ransack/locale/en.yml#L15
창 만들기
이번에는 ① 정렬 ② 이름 검색 ③ 가격 검색 ④ 상태 검색 ⑤ 발송 버튼
의 5부 구성.
학급 명칭 등은 마음대로 바꾸고 취향에 따라 결정하세요..detail_search
= search_form_for(@q,url: searches_detail_search_path) do |f|
.detail_search_sort
= f.select( :sorts, { '並び替え': 'id desc', '価格の安い順': 'price asc', '価格の高い順': 'price desc', '出品の古い順': 'updated_at asc', '出品の新しい順': 'updated_at desc' } , { onchange: 'this.form.submit()'} )
.detail_search_form
.detail_search__title
%h3 詳細検索
.detail_search__group
.detail_search__group--label
= fa_icon "search"
%p キーワードを追加する
= f.search_field :name_cont, placeholder: "例)値下げ"
.detail_search__group
.detail_search__group--label
= fa_icon "search"
%p 価格
.detail_search__group--forms
= f.search_field :price_gteq, placeholder: "¥ Min"
%p 〜
= f.search_field :price_lteq, placeholder: "¥ Max"
.detail_search__group
.detail_search__group--label
= fa_icon "search"
%p 商品の状態
.detail_search__group--checkbox
%label
%input{type: "checkbox"}
= 'すべて'
.detail_search__group--checkbox
%label
= f.check_box :state_in, '1', nil
= '新品、未使用'
.detail_search__group--checkbox
%label
= f.check_box :state_in, '2', nil
= '未使用に近い'
.detail_search__btns
.detail_search__btn--grey
= link_to "クリア", "/searches",type: "button"
= f.submit "完了"
이런 느낌이에요.
입력한 값은 searches#detail-입니다.검색에 보내도록 설정합니다.여기도 적당히 바꿔주세요.
컨트롤러 설정
searches_controller.rbclass SearchesController < ApplicationController
before_action :set_ransack
def detail_search
@search_product = Product.ransack(params[:q])
@products = @search_product.result.page(params[:page])
end
private
def set_ransack
@q = Product.ransack(params[:q])
end
end
이 정도면 됐어.
params의 값은 산열 형식으로 발송됩니다.
만약 가격을 잘 얻지 못한다면, 가격을 받아들이는 방법을 바꾸어 보세요.
그것을 실례 변수에 대입하면 된다.
검색 결과 표시
searches/detail_search.html.haml
以下はあくまで一例です。
適宜変更してください。
= render 'shared/header'
= render 'shared/sell-btn'
.search
.search-container
.search-left
= render 'searches/form-bar'
.search-right
%section.items-box-container
-if @search.present?
%h2.search-result-head
=@search
%span.search-result-head-text
の検索結果
.search-result-number
="1-#{@products.count}件表示"
-else
%h2.search-result-nil
検索結果
.search-result-number
="1-#{@products.count}件表示"
.items-box-content
= render @products
= render 'shared/footer'
0~600엔으로 검색해 봤어요.
잘했네.
끝맺다
간단하네.
혹시 모르는 게 있으면 댓글로 대답해 주세요!!
Reference
이 문제에 관하여(Rails ransack 검색 기능 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/nakanishi03/items/2fbcc8ba06b336291321
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
이번에는 ① 정렬 ② 이름 검색 ③ 가격 검색 ④ 상태 검색 ⑤ 발송 버튼
의 5부 구성.
학급 명칭 등은 마음대로 바꾸고 취향에 따라 결정하세요.
.detail_search
= search_form_for(@q,url: searches_detail_search_path) do |f|
.detail_search_sort
= f.select( :sorts, { '並び替え': 'id desc', '価格の安い順': 'price asc', '価格の高い順': 'price desc', '出品の古い順': 'updated_at asc', '出品の新しい順': 'updated_at desc' } , { onchange: 'this.form.submit()'} )
.detail_search_form
.detail_search__title
%h3 詳細検索
.detail_search__group
.detail_search__group--label
= fa_icon "search"
%p キーワードを追加する
= f.search_field :name_cont, placeholder: "例)値下げ"
.detail_search__group
.detail_search__group--label
= fa_icon "search"
%p 価格
.detail_search__group--forms
= f.search_field :price_gteq, placeholder: "¥ Min"
%p 〜
= f.search_field :price_lteq, placeholder: "¥ Max"
.detail_search__group
.detail_search__group--label
= fa_icon "search"
%p 商品の状態
.detail_search__group--checkbox
%label
%input{type: "checkbox"}
= 'すべて'
.detail_search__group--checkbox
%label
= f.check_box :state_in, '1', nil
= '新品、未使用'
.detail_search__group--checkbox
%label
= f.check_box :state_in, '2', nil
= '未使用に近い'
.detail_search__btns
.detail_search__btn--grey
= link_to "クリア", "/searches",type: "button"
= f.submit "完了"
이런 느낌이에요.
입력한 값은 searches#detail-입니다.검색에 보내도록 설정합니다.여기도 적당히 바꿔주세요.
컨트롤러 설정
searches_controller.rbclass SearchesController < ApplicationController
before_action :set_ransack
def detail_search
@search_product = Product.ransack(params[:q])
@products = @search_product.result.page(params[:page])
end
private
def set_ransack
@q = Product.ransack(params[:q])
end
end
이 정도면 됐어.
params의 값은 산열 형식으로 발송됩니다.
만약 가격을 잘 얻지 못한다면, 가격을 받아들이는 방법을 바꾸어 보세요.
그것을 실례 변수에 대입하면 된다.
검색 결과 표시
searches/detail_search.html.haml
以下はあくまで一例です。
適宜変更してください。
= render 'shared/header'
= render 'shared/sell-btn'
.search
.search-container
.search-left
= render 'searches/form-bar'
.search-right
%section.items-box-container
-if @search.present?
%h2.search-result-head
=@search
%span.search-result-head-text
の検索結果
.search-result-number
="1-#{@products.count}件表示"
-else
%h2.search-result-nil
検索結果
.search-result-number
="1-#{@products.count}件表示"
.items-box-content
= render @products
= render 'shared/footer'
0~600엔으로 검색해 봤어요.
잘했네.
끝맺다
간단하네.
혹시 모르는 게 있으면 댓글로 대답해 주세요!!
Reference
이 문제에 관하여(Rails ransack 검색 기능 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/nakanishi03/items/2fbcc8ba06b336291321
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
class SearchesController < ApplicationController
before_action :set_ransack
def detail_search
@search_product = Product.ransack(params[:q])
@products = @search_product.result.page(params[:page])
end
private
def set_ransack
@q = Product.ransack(params[:q])
end
end
searches/detail_search.html.haml
以下はあくまで一例です。
適宜変更してください。
= render 'shared/header'
= render 'shared/sell-btn'
.search
.search-container
.search-left
= render 'searches/form-bar'
.search-right
%section.items-box-container
-if @search.present?
%h2.search-result-head
=@search
%span.search-result-head-text
の検索結果
.search-result-number
="1-#{@products.count}件表示"
-else
%h2.search-result-nil
検索結果
.search-result-number
="1-#{@products.count}件表示"
.items-box-content
= render @products
= render 'shared/footer'
0~600엔으로 검색해 봤어요.잘했네.
끝맺다
간단하네.
혹시 모르는 게 있으면 댓글로 대답해 주세요!!
Reference
이 문제에 관하여(Rails ransack 검색 기능 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/nakanishi03/items/2fbcc8ba06b336291321
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Rails ransack 검색 기능 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/nakanishi03/items/2fbcc8ba06b336291321텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)