티스토리 뷰
안녕하세요 강정호입니다. 오늘은 레일즈로 회원가입하는 코드에 대해서 알아보겠습니다.
[회원 가입 폼]
<%= render 'shared/errors', obj: @user %>
<div class='row'>
<div class='col-xs-12'>
<%= form_for(@user, :html => {class: "form-horizontal", role: "form"}) do |f| %>
<div class="form-group">
<div class="control-label col-sm-2">
<%= f.label :username %>
</div>
<div class="col-sm-8">
<%= f.text_field :username, class: "form-control", placeholder: "Enter username", autofocus: true %>
</div>
</div>
<div class="form-group">
<div class="control-label col-sm-2">
<%= f.label :email %>
</div>
<div class="col-sm-8">
<%= f.email_field :email, class: "form-control", placeholder: "Enter email" %>
</div>
</div>
<div class="form-group">
<div class="control-label col-sm-2">
<%= f.label :password %>
</div>
<div class="col-sm-8">
<%= f.password_field :password, class: "form-control", placeholder: "Enter password" %>
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<%= f.submit(@user.new_record? ? "Sign up" : "Update account", class: 'btn btn-primary btn-lg') %>
</div>
</div>
<% end %>
<div class="col-xs-4 col-xs-offset-4">
[ <%= link_to "Cancel request and return to articles listing", articles_path %> ]
</div>
</div>
</div>
회원가입에 필요한 파라메터로는 username, email, password 3가지가 있습니다. 각각의 파라메터는 Symbol 형태로 Controller에 전송됩니다. :username, :email, :password로 되어야 컨트롤러에 전송됩니다. Spring에서 name='username' 으로 작성해야 파라메터가 전송되는 것과 같은 원리입니다.
[UserController 코드]
# Sign up을 누르면 new 라우팅으로 연결되어 new.html로 연결된다.
# 하지만 @user = User.new를 왜 생성하는지 이유를 알 수 없다.
# 왜냐하면 create에서도 @user를 사용하기 때문에 사실상 필요가 없는 생성이다.
def new
@user = User.new
end
def create
@user = User.new(user_params) # UI로부터 받아온 이름, 이메일, 비밀번호를 받아서 인스턴스 생성
if @user.save # 인스턴스를 DB에 저장
flash[:success] = "Welcome to the alpha blog #{@user.username}"
redirect_to articles_path
else
render 'new' # DB 저장에 실패하여 user/new.html로 다시 리다이렉트
end
end
라우터는 다음과 같이 설정되어 있습니다.
get 'signup', to: 'users#new'
resources :users, except: [:new]
localhost:3000/signup 을 입력하면 UserController의 new 메서드로 전송됩니다. 그렇게 되면 new 메서드에서는 new.html 파일로 보내줍니다. 그리고 Sign up 폼에서 입력된 파라메터를 다시 create로 보내줍니다.
private
def user_params
params.require(:user).permit(:username, :email, :password)
end
위의 user_params 라는 메서드가 UI로부터 오는 user 파라메터를 받아옵니다. params 라는 메서드는 request에 대한 모든 파라메터를 받아오는 함수입니다. params 메서드를 살펴보면 다음과 같습니다.
def params
@_params ||= Parameters.new(request.parameters)
end
request.parameters 즉 request에서 parameters 부분을 가져와 Parameter 객체를 생성합니다.
수 많은 파라메터 중 user로 wrapping 된 파라메터를 가져오는 것이 바로 require(:user) 입니다.
회원가입 폼 - Controller를 사용하여 회원가입하는 방법에 대해 알아보았습니다.
'Back-end' 카테고리의 다른 글
[루비온레일즈] 모든 회원의 정보 리스트로 보여주기 (0) | 2019.01.06 |
---|---|
[루비온레일즈] 유저 정보와 프로필 이미지 보여주기 (0) | 2019.01.06 |
[루비온레일즈] params.require(:article).permit(:title, :description) 무엇일까? (0) | 2018.12.25 |
[루비온레일즈] Rails console 생성, 변경, 삭제 그리고 유효성 검사 (0) | 2018.12.25 |
[루비온레일즈] 모델, 마이그레이션, 레일즈 콘솔 (0) | 2018.12.25 |
- Total
- Today
- Yesterday
- 항해플러스백엔드
- 내년은 빡세게!!
- resize
- GIT
- 재테크공부
- Inception
- 항해플러스후기
- push_back
- 도커
- 월급쟁이부자들
- 관계대수
- ```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
- 부동산공부
- 깃허브
- 개발자 회고
- front
- docker
- 열반스쿨기초반
- github
- 유즈케이스
- Use case
- 월부닷컴
- 항해솔직후기
- 깃
- pop_back
- 폭포수
- 파라메터
- 2023년
- 인셉션
- Spring boot
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |