예약 가능과 예약 불가로 색으로 구분

5400 단어 Rails6루비Rails
1. 소개
2. 예약 화면 이미지
3. 구현
4. 코드
5. 끝에

1. 소개



예약 가능과 예약 불가로 처리를 나누고 싶다고 생각했습니다만, 생각대로 가지 않았던 것과, 검색해도 기사가 적었기 때문에 정리합니다.
전제로, 시트의 좌석은 마스터 데이터로 DB에 저장됩니다.
예약 테이블(Reservations)과 좌석 테이블(Sheet)이 연관되어 있습니다.
예약 테이블은 좌석 테이블에 id를 sheet_id로 유지합니다.


Reservations
Sheet


sheet_id
id

   ・


   ・
컬럼


2. 예약 화면 이미지



예약할 수 있는 경우는 오렌지, 예약 불가의 경우는 색을 어둡게 해 시각적으로 알기 쉽게 하고 있습니다.
이번에는 영화관이 모델입니다. 응용하면 미용실이나 여행 사이트 등과 같이 취득한 캘린더나 날짜로 ○나 x를 사용하여 시각적으로 알기 쉽게 예약 화면을 만들 수도 있다고 생각합니다.


3. 구현



이번에는 helper를 사용하여 만듭니다.
heleper는 View내에서 하고 싶은 처리를 쓸 때 편리합니다. 왜냐하면, helper로 작성한 것은 <%= ヘルパー名 %> 로 하는 것으로 간단하게 호출할 수도 있고, View가 깨끗이 하기 때문에 가독성도 올라갑니다.
약간의 복잡한 처리를 View에서 실시하고 싶은 경우에 편리합니다.

다음 절차에 따라 처리합니다.

① Reservation의 shee_id 열에 sheet가 있는지 검색
② Reservation의 shee_id 컬럼에 sheet가 있는 경우는 (예약 있음) 색을 어둡게 한다, 없는 경우는 색을 오렌지 (예약 가능)

4. 코드



helpe

  def reservation_list(sheet)
      Reservation.exists?(sheet_id: "#{sheet}")
  end


보기

      <% @sheets.each do |sheet|%>
          <% if reservation_list(sheet.id) %>

            <div class="unavailable">
              <p><%= sheet.row %><%= sheet.column %></p>
            </div>
          <% else %>

        <%= link_to xxxxxx do %>

            <div class="available">
              <p><%= sheet.row %><%= sheet.column %></p>
            </div>

          <% end %>
        <% end %>
      <% end %>


도우미

헬퍼에 있는 exists? 메소드는 대상의 값이 있는지 검색해 줍니다. 이번에는 sheet_id를 인수의 sheet에서 검색합니다.

보기
①마스터 데이터의 sheetcontrollerSheet.all 를 하고 있습니다. 좌석 문자에 있는 알파벳은 row , 숫자는 column 입니다.
그것은 each에서 꺼낸다. <% @sheets.each do |sheet|%>
<% if reservation_list(sheet.id) %>helper 로 작성한 메소드입니다. 인수에 sheetid 넣어 id를 검색합니다.

else 를 사용하여 Reservationsテーブルsheet_id 에 값이 있거나 없을 경우에 처리를 나누고 있습니다. 값이 없는 경우에만 링크를 추가하고 있습니다.

sheet 의 출력 결과에 CSS 클래스를 추가하고 있습니다만, 이것으로 색을 조정합니다.

5. 결론



exists는 편리한 메소드가 있는 것은 몰랐다. . 공부가 되었습니다.

좋은 웹페이지 즐겨찾기