일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 홈페이지 개발하기
- rails
- 파이썬 웹 프레임워크
- 레일즈
- 웹 프로그래밍
- 루비 온 레일즈
- Python
- 꿀팁
- express-mysql-session
- 프론트엔드
- nodejs api
- css3
- rails review
- 장고
- 루비
- 장고 공부하기
- 웹프로그래밍
- django 공부하기
- jquery
- 웹 프론트엔드
- nodejs
- Django
- 모듈화
- 웹 프로그래밍 입문
- node.js
- 예스인테리어
- Ruby On Rails
- 루비온레일즈
- 모닝버드
- 데스크탑애플리케이션
- Today
- Total
노래하듯 이야기하고, 춤추듯 정복하라.
[Ruby & Rails] Rails의 View helper 본문
#Rails만 갖고 있는 view helper
레일즈의 view 파일들은 기본적으로 viewfile_name.html.erb 형태의 파일 포맷을 가진다. 뷰 템플릿 파일의 양이 많아질수록 html과 erb의 코드가 복잡해져서 유지보수와 디버깅이 어려워진다. 이러한 문제점을 해결하기 위해 레일즈에서는 그들만의 view_helper 메소드 들을 제공하고 있다. 레일즈의 view helper을 사용하면 템플릿파일이 비교적 깔끔해 지는 것을 느낄 수 있을 것이다.
<%= link_to 'Edit', edit_post_path(@post) %>
위와 같은 코드가 대표적인 예인데, 로컬 서버를 실행하여 개발자도구(f12)를 실행하고 위치를 찍어보면 다음과 같은 코드로 변환되어 보인다.
<la href="/posts/17/edit">Edit</a>
전 글에서 포스팅 했던 form_for역시 뷰의 헬퍼 중의 하나이다.
#View Helper의 종류
레일즈의 view helper는 문자열이나 숫자를 다루는 헬퍼, 외부 리소스 지정을 위한 뷰 헬퍼, 사용자가 직접 정의하는 사용자 정의 헬퍼 등 다양하게 존재한다. 이 때문에 개발자의 뷰 파일의 복잡도를 완화시키고, 유지보수도 간편하게 할 수 있는 것 같다.
이 포스팅에서 모든 헬퍼들을 다루기엔 방대하므로, 위에서 언급한 링크 관련 뷰헬퍼들에 대해 간단히 알아보자면,
- 하이퍼링크 생성 : link_to(body, url [, html_opt])
- body: 링크 텍스트
- url: 링크 대상
- html_opt: 동작 옵션
- 라우트 정의로 동적 url 생성 : url_for(opts)
- opts: url 생성 옵션
- 아래에서의 action은 edit나 destroy, new 등의 액션을 뜻하는 것 같다.
<%= url_for(action: :new) %>
- 조건에 따라 링크 생성 : link_to_if(condition, name [,url [,html_opt]], &block)
- 개인적으로 유용하다고 생각하는 헬퍼
- if user_signed_in과 같은 조건식을 추가하는 것을 생략해 줄 수 있지 않을까?
<%= link_to_if @user.nil?, '로그인', controller: :login, action: :index %>
#추가
- devise의 user 모델 헬퍼: 현재 사용자가 로그인 되어 있는지 여부를 물어본다.
<%= if user_signed_in? %>
'프로그래밍 > Ruby & Rails' 카테고리의 다른 글
[Ruby on Rails] Post모델에 댓글(comments) 기능 추가하기 (0) | 2018.08.10 |
---|---|
[Ruby on Rails] 좋아용 기능 구현하기: acts_as_votable (2) | 2018.08.09 |
[Ruby & Rails] 사진 업로드 _paperclip (0) | 2018.08.09 |
[Ruby & Rails] Rails의 devise gem 사용하기 (0) | 2018.07.05 |
[Ruby on Rails] scaffold 공부하기 (0) | 2018.07.05 |