[rails] 각 점수의 일람 화면을 설치합니다

6257 단어 RubyRails

개시하다


투자조합을 만드는 과정에서 우리는 평가된 상품에 대해 평가점에 따라 상품의 기능을 나타내려고 한다.
그때는 마땅한 소식을 찾지 못했기 때문에 이번에 총결산을 하였다.

개발 환경


ruby '3.0.0'
Rails 6.0.3.4

전제 조건


다음과 같이 평가에 사용할 모델과 열을 만들고 이를 발언 기능에 설치했다.
사용자가 '작은 도구' 를 발표하는 사이트에서 아래의 ER 그림으로gadjet을 진행합니다포인트를 이번 평가점으로 삼다.

이번에는 아래 그림처럼 10등급으로 평가된 것을 대상으로 점수별 일람화면을 만드는 것이 목표다.

경로


app/models/favorite.rb
class Favorite < ApplicationRecord
.
.
.
  resources :boards do
    member do
      get :stars
    end
  end
end
판 컨트롤러에'stars'동작을 추가하고'stars'동작에 각 평점(별수)의 일람 화면을 표시합니다.

뷰 생성하기


컨트롤러 앞에서 "stars"동작을 호출하는 보기를 만듭니다.
이번에는 아래 그림처럼 제목 메뉴에서 이동할 수 있습니다.

<div class="dropdown">
    <button class="btn btn-secondary dropdown-toggle margin-left20" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
        Star
    </button>
    <div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
        <% i = 10 %>
        <% until i == 0 do %>
            <%= link_to "#{i}stars" , stars_board_path(id:i), class:"dropdown-item font-black" %>
            <% i -= 1 %>
        <% end %>
    </div>
</div>
중복 처리에서 먼저'10'을 대입하고 매번 -1을 중복한다.
stars_board_path(id:i)→stars 동작의 실행 경로에서'id'를 평가점으로 교부합니다.

컨트롤러


app/controlles/boards_controlle.rb
class Favorite < ApplicationRecord
.
.
.
    def stars
        @gadjets = Gadjet.where(gadjet_point: params[:id])
        @stars = params[:id]
    end
end
Gadjet 모형의 데이터에서gadjet-point (열 이름) 를 받아들여진 평가점 (: id) 으로 추출합니다.

채점별 일람 화면


stars.html.erb
<div class="album py-5 bg-light">
    <div class="container">
        <h1 class="text-center margin-bottom25"><%= @stars %></h1>
        <%= render "shared/gajets-list", gadjets: @gadjets %> 
               #評価点別に抽出した@gadjetsをひとつづつ表示するviewを呼び出し。ここはご自身で作成願います。
    </div>
</div>
결과적으로 다음과 같은 이미지와 같은 각 평가점의 일람화면을 만들 수 있다.

끝맺다


나는 이 실시 방법이 완전히 독창적이고 효율적이고 더 좋은 방법이라고 생각한다.
만약 오류 등이 있으면 평론에서 지적해 주십시오.
조금만 참고해주시면 감사하겠습니다.

좋은 웹페이지 즐겨찾기