【Rails】 모호한 검색 기능의 설치 방법

6970 단어 RubyRails

날과 씨


현재 절찬의 조합을 만들고 있으며 검색 기능을 구현하고자 fluma 애플리케이션의 다크서클을 제작했다.어렵지는 않지만 먼저 많이 쓰고 싶어요.

컨디션


ruby 2.6.5
Rails 6.0.3.2
haml 사용

화상도




절차.


1. 라우팅 설정
2、검색 창 만들기
3. 모델로 정의
4. 컨트롤러 설정
5. 보기 만들기
라는 다섯 단계를 거쳤다.
간단하니까 쉽게 만들 수 있을 것 같아요.

라우팅 설정


이번에는 7개의 기본 동작 이외의 동작을 정의했다.
7개의 기본 동작은 indexnewcreate 등의 동작을 가리킨다.
우선 코드부터
routes.rb
resources :items do
  collection do
    get 'search'
  end
end
설명이긴 한데.
이번에는 아까 말했듯이 7개의 기본 동작 이외의 동작으로 정의했다.어쨌든 새로운 동작을 만든다는 인상을 준다.
이 코드는 collection ~ end입니다.
get 옆에 있는 search 은 새로운 동작 이름입니다.
그리고 collection 여기는 id의 필요성에 따라 URL을 지정한 목적지입니다.
아이디란 show Action 같은 로그인 상품의 상세 페이지를 보러 갔을 때 차인 물건(아, 차였다고 하면 언어의 어감이 다를 수 있는데...)
그래서 id가 없으면collection
아이디가 있으면 멤버예요.
이번에는 특정한 페이지에 갈 필요가 없기 때문에 collection로 경로를 설정합니다.

검색 창 만들기


우선 코드부터
index.html.haml
= form_with(url: search_items_path, local: true, method: :get, class: "search-form") do |f|
  = f.text_field :keyword, placeholder: "検索する", class: "search-input"
  %label{for: "search-icon", class: "search-label"}
    %i.fas.fa-search
  .search-icon
    = f.submit "検索", class: "search-btn", id: "search-icon"
필요한 부분만 설명하다.
우선 url에 대한 설정 부분은 아까 설정한 검색의 루트에 설정된plefix에 적혀 있습니다.plefix를 경로로 쓸 때 문자의 끝에path로 쓸 거예요.
조사 방법을 아실 거라고 생각합니다.
터미널rails routes에서
그 다음엔, 뭐, 이건 무리할 필요 없지만 위 이미지처럼 무안경을 썼어요🔍이런 아이콘과submit (발송 단추) 의 링크입니다.
안경🔍이런 아이콘을 누르면 발송 버튼을 눌러 설정할 수 있다.
방법은 label: for와 id로 연결됩니다.
상술한 코드로 말하자면
이것과%label{for: "search-icon", class: "search-label"}이것이 바로 = f.submit "検索", class: "search-btn", id: "search-icon"입니다.search-icon같은 이름도 있죠.연결됐습니다.
또한 이번에는 검색 형식에 f.text_field :keyword을 기술했기 때문에 이 형식에 입력한 값은 컨트롤러params[:keyword]로 작성할 수 있다.

모델로 정의


여기도 코드부터.
item.rb
def self.search(search)
  return Item.all unless search
  Item.where('name LIKE(?)', "%#{search}%")
end
이번에는 item이라는 이름으로 모형을 만들고 있다는 것을 잊어버렸다.
설명 좀 해주세요.
where 메서드와 LIKE 문을 사용하여 검색 키워드가 포함된 투고를 가져옵니다.
where 방법은 모델 이름입니다.where ("검색할 열을 포함하는 조건식") 은 표의 "조건에 맞는 기록 실례"를 그룹 형식으로 가져올 수 있습니다.
LIKE 문장은 애매한 문자열을 검색할 때 사용되며 where 방법과 함께 사용됩니다.
자세한 내용은 생략합니다. 이번에는 검색어의name열을 포함하는 데이터를 검색합니다.
자세히 알고 싶은 사람은 아래의 링크 주소를 쉽게 알 수 있다.
[SQL] IKE 문장의 기본 사용법~여러 시간을 검색하는 방법까지의 해설
그나저나 검색이 뭐야?이런 생각을 가진 사람에게 설명하다.
주로 매개 변수의 표현이다.
매개 변수의 검색 (첫 줄 (search) 은 검색 표에서 보내는 매개 변수를 포함합니다.쉽게 말하면 검색표에 귤을 입력하고 발송 버튼을 누르면 귤이 이 매개 변수에 들어간다.
다음은 문법의 화제다.
이 매개 변수에 귤이라는 데이터를 넣으면 정의된 검색도 귤로 변한다.즉, 이렇게 귤 재료로 말하자면 item표의name열에 귤이라는 글자가 들어 있는 것을 검색하는 것이다.
그러니까 첫 줄(search)은 어떤 단어라도 돼요.
다음은return Item.all unless search,이건 글자처럼 읽힌다.
서치라는 글자가 없다면 다른 모든 것을 출력한다는 뜻이다.
마지막으로 1행self.search의 설명이다.
지금은 .search 이런 방법을 사용할 수 없습니다(이후 컨트롤러로 정의).
, 모형으로 설정하여 컨트롤러에서 사용할 수 있다.또한 모델에서 방법을 정의할 때 방법명의 머리self.에 있으면 컨트롤러가 사용할 수 있는 학급 방법이 된다.
이제 모델 정의가 끝납니다.

컨트롤러 설정


아니면, 여기도 코드부터 시작해요.
item_controller.rb
def search
  @items = Item.search(params[:keyword])
end
@items = Item.search(params[:keyword])의 코드는
위에서 말한 바와 같이 나는 지금까지의 설명이 충분하다고 생각해서 생략한다.

뷰 생성하기


검색 결과 화면의 뷰 만들기
여기, search.html.haml라는 파일을 만듭니다.
each 방법으로 출력하면 될 것 같아서요.
search.html.haml
.contents__box
  - @items.each do |item|
  ここより下は今自分が作っているものに照らし合わせて作成お願いします。

이렇게 되면 모든 설치가 완성되었다!
만약 설치할 수 없는 등 완비되지 않은 곳이 있으면 저에게 연락 주세요!
감사합니다.

좋은 웹페이지 즐겨찾기