rails 학습 7일째 그 3

6645 단어 Rails 튜토리얼

Rails 튜토리얼 7장



7.1.1 디버깅 및 Rails 환경




debug(params) 기능을 사용하면 컨트롤러의 액션이나 그 외의 정보를 표시해 주어 편리하게 된다.

cscc의 믹스 인 기능
@mixin box_sizing{
  -moz-box-sizing:border-box;
  -webkit-box-sizing: border-box;
  box-sizing:         border-box;
  }

.debug_bump{
  clear:both;
  @include box-sizing
  } 

@mixin 에서 여러 기능을 결합하여 변수처럼 취급할 수 있다. 호출할 때는 @include 로 호출하는 것으로 기능을 사용할 수 있다

7.1.4 Gravatar 이미지와 사이드바



Gravatar는 무료 서비스로 프로필 사진을 업로드하여 지정한 이메일 주소와 연결할 수 있습니다. 코드로 사용할 때는 gravatar_for라는 도우미 메서드를 사용하여 이미지를 주소와 연결할 수 있습니다.

①gravatar_for 도우미 방법 만들기


image_tag라는 도우미 메서드 사용
image_tag(gravatar의 URL,alt:〇〇,class:"gravatar")
이것으로 헬퍼 메소드의 정의가 끝났으므로 다음에 실제로 사용해 간다

② 뷰에 Gravatar 이미지와 이름을 올린다

사용하고 싶은 뷰에
<%= gravatar_for @user %>
<%= @user.name %>

붙여넣기( @user 를 정의해야 함)
@user 가 등록한 메어드에 붙어 있는 이미지가 gravatar에 있으면 그것을 표시시킨다.

7.2.1 form_for 사용





strong Parameters
def create
  @user = User.new(params[:user])
end

params[:user]만으로는 악의 있는 사용자가 다른 정보를 보낼 수도 있는 위험이 있다. 그래서 이쪽이 허가한 값만을 허가하기 위한 코드가 필요하게 된다.
def user_params
  params.require(:user).permit(:name, :email, :password, :password_confirmation)
end

이 코드를 쓰면 지정된 값만 허가하여 통과하게 된다. 이 결과 코드는 다음과 같습니다.
def create
  @user = User.new(user_params)
end

private

def user_params
  params.require(:user).permit(:name, :email, :password, :password_confirmation)
end

private 아래의 코드는 외부로부터의 조작을 받지 않기 때문에 안전하다

7.3.3 오류 메시지



유저 등록은 가능하게 되었지만 만약 등록에 실패해도 현재는 「실패했습니다」등의 메세지가 아무것도 표시되지 않기 때문에 보존이 성공했는지 실패했는지 유저측은 판단을 할 수 없는 상태가 되어 있다.

그래서


저장되지 않은 경우 오류를 표시하는 코드 작성

구조로서는 에러를 표시하기 위한 코드 등을 _error_message 파일에 써 두고, 그것을 render를 사용해 new.html까지 가져오고 있다.

7.4 사용자 등록 성공



사용자의 등록 실패시에 에러를 낼 수 있도록 했지만, 다음은 등록이 성공했을 때 성공의 메시지가 나오도록 한다.
if @user.save
flash[:success]="Welcome to the Sample App!"
redirect_to @User 

"만약 사용자가 저장에 성공하면 "Welcome to the Sample App!"라는 플래시 메시지를 낸다"는 코드가 걸렸다.
그러나 우선 flash를 정의하고 있지 않기 때문에 flash를 호출하는 것도 아무것도 없다.
그래서 flash를 정의한다.
<% flash.each do |message_type,message| %>
<div class="alert alert-<%= message_type %>"><%= message %></div%>
<% end %>

이제 flash를 정의할 수 있었다.

좋은 웹페이지 즐겨찾기