redirect_to 사용 시 Bootstrap 지원 플래시 메시지 표시

6570 단어 RailsRails4
※ 「 Rails 만지는 사람이라면보고 싶은 "체계적인"콩 지식 」로부터의 파생 기사입니다.

타이틀의 건에 대해 초곤란하고 있는 분도 보고 있을지도 모르기 때문에 먼저 대답을 말해 두면, add_flash_types 메소드 를 사용해 키를 허가해 합시다고 하는 이야기입니다.

원래 플래시 메시지란?





어플리케이션에 로그인했을 때, 신규 투고의 보존에 성공/실패했을 때, 부정한 액세스를 실시해 리디렉션되었을 때 등, 페이지 상단에 나와 주는 마음이 든 사람 메시지이다.

Rails에서는 이 녀석을 플래시 메시지라고 부르며 쉽게 설정할 수 있는 구조를 제공해 준다.

또한 플래시 메시지는 다시로드하면 사라지기 때문에 바로 일시적인 소식에 하이퍼 편리.

플래시 메시지 어떻게 사용합니까?



여러 사람에 의해서 사용법에 바리에이션이 있는 것 같지만, 개인적으로는 외형의 깨끗함과 응용의 효용 싸움, 김에 Bootstrap의 alert를 적용시키고 싶다고 하는 이유로부터 이런 기술로 실장하고 있다.

보낸 플래시 메시지를 페이지 상단에 표시하는 설명



layouts/application.html.haml
  %body
    = render "layouts/header"
    - flash.each do |key, value|
      - key = "info" if key == "notice"
      - key = "danger"  if key == "alert"
      = content_tag :div, value, class: "alert alert-#{key}"
    = yield
    = render "layouts/footer"
  • Body 태그에서 내비게이션 바 바로 아래의 가장 위

  • 이 위치에 컨트롤러로부터 보내지는 플래시 메시지를 읽는 기술을 한다.
    그러면 다시 이상하게 해당 처리가 이루어졌을 때 페이지 상단에 메시지가 표시됩니다.
    그냥 처음의 이미지처럼.

    플래시 메시지를 컨트롤러에서 보내는 설명



    controllers/flash_samples_controller.rb
    def create
      review = current_user.reviews.new(review_params)
      if review.save
        redirect_to books_url, success: "Successfully created your prototype."
      else
        redirect_to root_url,  warning: "Unfortunately failed to create."
      end
    end
    
  • redirect_to [경로 이름], [지정된 키]: "메시지"

  • 이런 식으로 사용하는 경우가 많다.
    사족이지만, save 메소드는 정상적으로 데이터의 보존이 완료하면 인스턴스의 존재가 담보되어 true 를, 그렇지 않은 경우는 false또한 지정할 수 있는 키는, Bootstrap alert 스타일 사용하는 경우라면 이하의 4 종류.


    키 이름
    외형


    성공


    정보


    warning


    danger



    ※플래시 메세지는 redirect 처리 이외의 장면에서도 물론 사용할 수 있지만, 이번 주제는 「redirect 처리시에 제대로 플래시 메세지를 표시시킨다(그리고 지정한 키를 이용해 간단하게 Bootstrap의 스타일을 맞춘다)」이기 때문에 이번에는 redirect_to의 옵션으로 플래시를 사용하는 경우에만 언급한다.

    자, 리디렉션하자.



    여기까지로 한가지의 기술은 할 수 있었으므로 즉시 표시를 확인해 본다.
    이번은 코멘트를 투고했을 때에 플래시 메세지를 표시시키는 케이스를 상정.

    막상!



    …응?
    나오지 않아?

    설정해야하는 플래시 메시지가 나오지 않습니다!?

    녀석이 빠진 것 같습니다.



    실은 플래시 메시지에는 noticealert 의 2 종류의 키 밖에 설정할 수 없다.
    Bootstrap 사용할 수 없으면 번거롭기 때문에 다른 키를 허용하는 설명을 컨트롤러에 추가한다.

    플래시 메시지의 키를 허용하는 설명



    application_controller.rb
    class ApplicationController < ActionController::Base
      add_flash_types :success, :info, :warning, :danger
    end
    
  • ApplicationControlleradd_flash_typesメソッド 사용

  • 이제 드디어 Bootstrap에 대응한 success info warning danger지금의 상태로 다시 표시를 확인해 본다.

    막상!



    나왔다…!!

    이것으로 redirect_to 에 옵션으로서 플래시 메세지를 부여하는 것만으로 간단하게 기분이 좋은 사람 메세지를 표시할 수가 있다.

    좋은 웹페이지 즐겨찾기