레일스 이미지 도우미
구조
내 사이드 프로젝트Your Congress에서 저는 무료 GitHub 저장소UnitedStates/Images를 사용하고 있습니다. 이 저장소는 의회 의원에게 봉사하는 모든 사진을 저장합니다. 이미지 크기 및 회원 ID별로 GitHub 페이지에서 제공되는 API를 통해 이미지에 액세스할 수 있습니다. 따라서 이미지 URL은
https://theunitedstates.io/images/congress/[size]/[member_id].jpg
와 같이 구성됩니다.이미지는 ERB 부분으로 렌더링됩니다.
image_tag "https://theunitedstates.io/images/congress/225x275/#{senator.member_id}.jpg"
문제
기존 코드는 잘 작동하지만 새로운 구성원이 미국 의회에 추가되었으므로 현재 새 구성원에 대해 사용 가능한 이미지를 사용할 수 없습니다. 이미지를 사용할 수 없는 경우 브라우저 개발자 콘솔은 404 상태 코드를 기록하고 UI에 깨진 이미지가 표시되어 카드 레이아웃이 깨집니다. 따라서 이러한 이미지에 액세스하고 가용성을 확인하는 더 나은 방법이 필요합니다.
목표:
이것은 ERB 부분에 대해 너무 복잡하므로 이 프로세스를 건조시키기 위해 Rails Helper를 생성할 것입니다.
해결책
What are helpers in Rails? A helper is a method that is (mostly) used in your Rails views to share reusable code.
RubyGuides
우리는
app/helpers
라는 bio_image_helper.rb
라는 새로운 도우미를 만들고 있습니다. 도우미의 기본 구조는 모듈을 만든 다음 모듈 내에서 뷰 내에서 호출할 메서드를 만드는 것입니다. 변수에 URI 문자열을 정의하고 member_id
라는 인수에 member
를 전달할 것입니다. 따라서 기본 구조:module BioImageHelper
def bioimage_helper(member)
img_url = "https://theunitedstates.io/images/congress/225x275/#{member}.jpg"
res = Net::HTTP.get_response(URI.parse(img_url.to_s))
res.is_a?(Net::HTTPSuccess) ? img_url : 'backup.png'
end
end
두 번째 목표는 이미지 응답의 성공 여부를 확인하고 대체 이미지를 제공하는 것이었습니다. 이러한 목표를 달성하기 위해
net/http
및 uri
두 개의 라이브러리를 사용할 것입니다. 이를 통해 응답 객체를 변수( res
)에 저장하고 img_url
문자열을 구문 분석합니다. 그런 다음 Ruby 삼항을 사용하여 HTTPSuccess
에 대한 응답 객체를 확인하고 이미지 또는 대체 이미지를 사용합니다.require 'net/http'
require 'uri'
module BioImageHelper
def bioimage_helper(member)
img_url = "https://theunitedstates.io/images/congress/225x275/#{member}.jpg"
res = Net::HTTP.get_response(URI.parse(img_url.to_s))
res.is_a?(Net::HTTPSuccess) ? img_url : 'backup.png'
end
end
따라서 부분적 now의
image_tag
는 다음과 같이 추상화됩니다.image_tag bioimage_helper(senator.member_id)
감사
피드백과 코드 리뷰를 통해 저를 올바른 방향으로 안내해 주신 Ruby on Rails Discord Server 사용자들에게 특별한 감사를 드립니다.
그리고 Stack Overflow 토론이 가장 도움이 되었습니다.
보행인
재미있었습니다. 에 댓글을 남겨주시거나 DM을 보내주세요.
Shameless Plug: 훌륭한 회사에서 일하고 있고 다양한 기술과 삶의 경험을 가진 소프트웨어 개발자 시장에 있다면 나에게 메시지를 보내고 내 .
Reference
이 문제에 관하여(레일스 이미지 도우미), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/eclecticcoding/rails-image-helper-22mc텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)