[rails] 각 점수의 일람 화면을 설치합니다
개시하다
투자조합을 만드는 과정에서 우리는 평가된 상품에 대해 평가점에 따라 상품의 기능을 나타내려고 한다.
그때는 마땅한 소식을 찾지 못했기 때문에 이번에 총결산을 하였다.
개발 환경
ruby '3.0.0'
Rails 6.0.3.4
전제 조건
다음과 같이 평가에 사용할 모델과 열을 만들고 이를 발언 기능에 설치했다.
사용자가 '작은 도구' 를 발표하는 사이트에서 아래의 ER 그림으로gadjet을 진행합니다포인트를 이번 평가점으로 삼다.
이번에는 아래 그림처럼 10등급으로 평가된 것을 대상으로 점수별 일람화면을 만드는 것이 목표다.
경로
app/models/favorite.rbclass 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.rbclass 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>
결과적으로 다음과 같은 이미지와 같은 각 평가점의 일람화면을 만들 수 있다.
끝맺다
나는 이 실시 방법이 완전히 독창적이고 효율적이고 더 좋은 방법이라고 생각한다.
만약 오류 등이 있으면 평론에서 지적해 주십시오.
조금만 참고해주시면 감사하겠습니다.
Reference
이 문제에 관하여([rails] 각 점수의 일람 화면을 설치합니다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/katsuryo68/items/8b2b8e89910fba3c5e41
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
다음과 같이 평가에 사용할 모델과 열을 만들고 이를 발언 기능에 설치했다.
사용자가 '작은 도구' 를 발표하는 사이트에서 아래의 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>
결과적으로 다음과 같은 이미지와 같은 각 평가점의 일람화면을 만들 수 있다.끝맺다
나는 이 실시 방법이 완전히 독창적이고 효율적이고 더 좋은 방법이라고 생각한다.
만약 오류 등이 있으면 평론에서 지적해 주십시오.
조금만 참고해주시면 감사하겠습니다.
Reference
이 문제에 관하여([rails] 각 점수의 일람 화면을 설치합니다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/katsuryo68/items/8b2b8e89910fba3c5e41
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여([rails] 각 점수의 일람 화면을 설치합니다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/katsuryo68/items/8b2b8e89910fba3c5e41텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)