로그인 양식에 발리 데이 추가
18121 단어 Rails
개시하다
로그인 창에 창 대상을 사용하여 채우기 추가
차리다
일단 최초 설정과 준비.rails new login_form_validate
rails g model user email:string password_digest:string
rails db:migrate
rails g controller users index new
rails g controller sessions new
gem 설정gem 'bcrypt', '~> 3.1.7'
gem 'simple_form'
gem 'bootstrap'
gem 'popper_js'
gem 'tether-rails'
gem 'jquery-rails'
gem 'validates_email_format_of'
routes.rbRails.application.routes.draw do
resources :sessions
resources :users
# For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
end
users_controllerclass UsersController < ApplicationController
def index
end
def new
@user = User.new
end
def create
@user = User.create(user_params)
if @user.save
redirect_to users_path
else
render :new
end
end
private
def user_params
params.require(:user).permit(:email,:password,:password_confirmation)
end
end
users_views
new.html.erb<br>
<br>
<br>
<br>
<div class="container">
<%= simple_form_for(@user) do |f| %>
<div class="form-group">
<%= f.input :email %>
</div>
<div class="form-group">
<%= f.input :password %>
</div>
<div class="form-group">
<%= f.input :password_confirmation %>
</div>
<%= f.submit %>
<% end %>
</div>
i18n 설정
config/application.달성config.i18n.default_locale = :ja
config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}').to_s]
덧붙이다
config 아래에default,models,views 폴더를 만듭니다
default 이하ja.제작 방법
이거 붙여.
모델 아래에 사용자 폴더를 만들고 다음 ja를 만듭니다.제작 방법ja:
activerecord:
models:
user: ユーザー
attributes:
user:
email: メールアドレス
password: パスワード
views 폴더 아래 ja.yml 만들기ja:
helpers:
submit:
create: '登録する'
update: '更新する'
submit: '保存する'
simple_form:
required:
html: '<abbr class="nec">必須</abbr>'
labels:
user:
email: 'メールアドレス'
password: 'パスワード'
hints:
user:
email: 'サインインするメールアドレスを入力してください'
password: '半角英数字のみ使えます'
placeholders:
user:
email: 'メールアドレス'
password: 'パスワード'
이거 붙여.
설정 검증
models/user.달성
user.rb
has_secure_password
validates :email, presence: true
validates :email, :email_format => {:message => '正しいメールアドレスを入力してください'}
validates :password, presence: true
이 항목 추가
이렇게 되면
이렇게 되면 사용자를 먼저 등록할 수 있을 것 같아요.
메시지
formObject를 사용하여 로그인 양식에 프롬프트 추가
우선 app에서forms 폴더를 만든 다음에
session.rb 만들기
그리고 안에 있는 것들.
session.rb
class Session
include ActiveModel::Model
attr_accessor :email, :password
validates :email, presence: true
validates :password, presence: true
def save
return false if invalid?
true
end
end
이거 추가해.
먼저 Active Model: Model의 내부 순항으로 발리를 사용할 수 있습니다.
attr_accessor에서 사용할 열을 미리 적으십시오.
이번 상황은 이메일과 패스워드입니다.
저장에 관하여.save에서 불려나와validates에 걸리면 돌아오지 않으면 정말 바뀐다.
이런 상황에서 반드시 진실을 명확하게 써야 한다.
다음은 세션스.controllerclass SessionsController < ApplicationController
def new
@login = Session.new
end
def create
@login = Session.new(email: params[:session][:email], password: params[:session][:password])
if @login.save && (@user = User.find_by(email: @login.email)) && @user.authenticate(@login.password)
redirect_to users_path
else
render :new
end
end
end
이렇게 된 느낌.
방금 만든 세션반을 사용하세요.
참고로 거의 폼이에요.object의 반 이름은 무엇이든지 좋습니다. 하지만 이번session은 이유가 있기 때문에formfor 때는 Session이라는 반 이름부터. session.path를 자동으로 만들 수 있으니까요.
예를 들어login이라는 클래스명의formObject를 만들면 로그인 형식으로.
<%= simple_form_for(@login) do |f| %>
<% end %>
시 자동으로 생성되는 경로는login -포스터니까. 즉/logins/create.if @login.save && (@user = User.find_by(email: @login.email)) && @user.authenticate(@login.password)
만약 이것이 가짜라면,render: new를 실행합니다.
오류 메시지가 표시됩니다.
그나저나 이렇게 되면 잘못된 정보가 영어로 변한다.
이걸 영어로 만들기 위해서.
다음은 localls/models에서 만든session 폴더입니다.yml 만들기
안을 열다
ja:
activemodel:
attributes:
session:
email: メールアドレス
password: パスワード
그럼 일본어 되는 거야.
사용자 지정 버전
form_Object에 사용자 정의 버전 추가
이메일이 존재하지 않으면 이메일이 사용되지 않으면 오류가 발생합니다. 이메일은 존재하지만 비밀번호가 존재하지 않는 경우 이메일은 오류가 발생하지 않고 패스워드에서 오류가 발생합니다.
코드는 이런 느낌입니다.class Session
include ActiveModel::Model
attr_accessor :email, :password
validates :email, presence: true
validates :password, presence: true
validate :true_email
validate :true_password
def true_email
errors.add(:email, "は使われていません。") unless User.find_by(email: email)
end
def true_password
@user = User.find_by(email: email)
if @user
errors.add(:password, "は正しくありません。") unless @user.authenticate(password)
else
errors.add(:password, "は正しくありません。")
end
end
def save
return false if invalid?
true
end
end
true_이메일과 진실파스워드라는 발리데이를 만들고 있습니다.
오류가 발생했을 때 errors.dd를 통해 발생합니다.
그나저나 errors.add (:base, ") 의 쓰기도 가능하며, 전체적인 오류로 표시하려면 사용할 수 있습니다.
하지만 단순form에 표시되지 않기 때문에 손을 넣어야 합니다.
view에서 @login.errors[:base]의 느낌으로 표현할 수 있어요.
마무리
Reference
이 문제에 관하여(로그인 양식에 발리 데이 추가), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/sibakenY/items/d07adc17d080520a9d0d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
일단 최초 설정과 준비.
rails new login_form_validate
rails g model user email:string password_digest:string
rails db:migrate
rails g controller users index new
rails g controller sessions new
gem 설정gem 'bcrypt', '~> 3.1.7'
gem 'simple_form'
gem 'bootstrap'
gem 'popper_js'
gem 'tether-rails'
gem 'jquery-rails'
gem 'validates_email_format_of'
routes.rbRails.application.routes.draw do
resources :sessions
resources :users
# For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
end
users_controllerclass UsersController < ApplicationController
def index
end
def new
@user = User.new
end
def create
@user = User.create(user_params)
if @user.save
redirect_to users_path
else
render :new
end
end
private
def user_params
params.require(:user).permit(:email,:password,:password_confirmation)
end
end
users_viewsnew.html.erb
<br>
<br>
<br>
<br>
<div class="container">
<%= simple_form_for(@user) do |f| %>
<div class="form-group">
<%= f.input :email %>
</div>
<div class="form-group">
<%= f.input :password %>
</div>
<div class="form-group">
<%= f.input :password_confirmation %>
</div>
<%= f.submit %>
<% end %>
</div>
i18n 설정config/application.달성
config.i18n.default_locale = :ja
config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}').to_s]
덧붙이다config 아래에default,models,views 폴더를 만듭니다
default 이하ja.제작 방법
이거 붙여.
모델 아래에 사용자 폴더를 만들고 다음 ja를 만듭니다.제작 방법
ja:
activerecord:
models:
user: ユーザー
attributes:
user:
email: メールアドレス
password: パスワード
views 폴더 아래 ja.yml 만들기ja:
helpers:
submit:
create: '登録する'
update: '更新する'
submit: '保存する'
simple_form:
required:
html: '<abbr class="nec">必須</abbr>'
labels:
user:
email: 'メールアドレス'
password: 'パスワード'
hints:
user:
email: 'サインインするメールアドレスを入力してください'
password: '半角英数字のみ使えます'
placeholders:
user:
email: 'メールアドレス'
password: 'パスワード'
이거 붙여.설정 검증
models/user.달성
user.rb
has_secure_password
validates :email, presence: true
validates :email, :email_format => {:message => '正しいメールアドレスを入力してください'}
validates :password, presence: true
이 항목 추가이렇게 되면
이렇게 되면 사용자를 먼저 등록할 수 있을 것 같아요.
메시지
formObject를 사용하여 로그인 양식에 프롬프트 추가
우선 app에서forms 폴더를 만든 다음에
session.rb 만들기
그리고 안에 있는 것들.
session.rb
class Session
include ActiveModel::Model
attr_accessor :email, :password
validates :email, presence: true
validates :password, presence: true
def save
return false if invalid?
true
end
end
이거 추가해.
먼저 Active Model: Model의 내부 순항으로 발리를 사용할 수 있습니다.
attr_accessor에서 사용할 열을 미리 적으십시오.
이번 상황은 이메일과 패스워드입니다.
저장에 관하여.save에서 불려나와validates에 걸리면 돌아오지 않으면 정말 바뀐다.
이런 상황에서 반드시 진실을 명확하게 써야 한다.
다음은 세션스.controllerclass SessionsController < ApplicationController
def new
@login = Session.new
end
def create
@login = Session.new(email: params[:session][:email], password: params[:session][:password])
if @login.save && (@user = User.find_by(email: @login.email)) && @user.authenticate(@login.password)
redirect_to users_path
else
render :new
end
end
end
이렇게 된 느낌.
방금 만든 세션반을 사용하세요.
참고로 거의 폼이에요.object의 반 이름은 무엇이든지 좋습니다. 하지만 이번session은 이유가 있기 때문에formfor 때는 Session이라는 반 이름부터. session.path를 자동으로 만들 수 있으니까요.
예를 들어login이라는 클래스명의formObject를 만들면 로그인 형식으로.
<%= simple_form_for(@login) do |f| %>
<% end %>
시 자동으로 생성되는 경로는login -포스터니까. 즉/logins/create.if @login.save && (@user = User.find_by(email: @login.email)) && @user.authenticate(@login.password)
만약 이것이 가짜라면,render: new를 실행합니다.
오류 메시지가 표시됩니다.
그나저나 이렇게 되면 잘못된 정보가 영어로 변한다.
이걸 영어로 만들기 위해서.
다음은 localls/models에서 만든session 폴더입니다.yml 만들기
안을 열다
ja:
activemodel:
attributes:
session:
email: メールアドレス
password: パスワード
그럼 일본어 되는 거야.
사용자 지정 버전
form_Object에 사용자 정의 버전 추가
이메일이 존재하지 않으면 이메일이 사용되지 않으면 오류가 발생합니다. 이메일은 존재하지만 비밀번호가 존재하지 않는 경우 이메일은 오류가 발생하지 않고 패스워드에서 오류가 발생합니다.
코드는 이런 느낌입니다.class Session
include ActiveModel::Model
attr_accessor :email, :password
validates :email, presence: true
validates :password, presence: true
validate :true_email
validate :true_password
def true_email
errors.add(:email, "は使われていません。") unless User.find_by(email: email)
end
def true_password
@user = User.find_by(email: email)
if @user
errors.add(:password, "は正しくありません。") unless @user.authenticate(password)
else
errors.add(:password, "は正しくありません。")
end
end
def save
return false if invalid?
true
end
end
true_이메일과 진실파스워드라는 발리데이를 만들고 있습니다.
오류가 발생했을 때 errors.dd를 통해 발생합니다.
그나저나 errors.add (:base, ") 의 쓰기도 가능하며, 전체적인 오류로 표시하려면 사용할 수 있습니다.
하지만 단순form에 표시되지 않기 때문에 손을 넣어야 합니다.
view에서 @login.errors[:base]의 느낌으로 표현할 수 있어요.
마무리
Reference
이 문제에 관하여(로그인 양식에 발리 데이 추가), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/sibakenY/items/d07adc17d080520a9d0d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
class Session
include ActiveModel::Model
attr_accessor :email, :password
validates :email, presence: true
validates :password, presence: true
def save
return false if invalid?
true
end
end
class SessionsController < ApplicationController
def new
@login = Session.new
end
def create
@login = Session.new(email: params[:session][:email], password: params[:session][:password])
if @login.save && (@user = User.find_by(email: @login.email)) && @user.authenticate(@login.password)
redirect_to users_path
else
render :new
end
end
end
<%= simple_form_for(@login) do |f| %>
<% end %>
if @login.save && (@user = User.find_by(email: @login.email)) && @user.authenticate(@login.password)
ja:
activemodel:
attributes:
session:
email: メールアドレス
password: パスワード
form_Object에 사용자 정의 버전 추가
이메일이 존재하지 않으면 이메일이 사용되지 않으면 오류가 발생합니다. 이메일은 존재하지만 비밀번호가 존재하지 않는 경우 이메일은 오류가 발생하지 않고 패스워드에서 오류가 발생합니다.
코드는 이런 느낌입니다.
class Session
include ActiveModel::Model
attr_accessor :email, :password
validates :email, presence: true
validates :password, presence: true
validate :true_email
validate :true_password
def true_email
errors.add(:email, "は使われていません。") unless User.find_by(email: email)
end
def true_password
@user = User.find_by(email: email)
if @user
errors.add(:password, "は正しくありません。") unless @user.authenticate(password)
else
errors.add(:password, "は正しくありません。")
end
end
def save
return false if invalid?
true
end
end
true_이메일과 진실파스워드라는 발리데이를 만들고 있습니다.오류가 발생했을 때 errors.dd를 통해 발생합니다.
그나저나 errors.add (:base, ") 의 쓰기도 가능하며, 전체적인 오류로 표시하려면 사용할 수 있습니다.
하지만 단순form에 표시되지 않기 때문에 손을 넣어야 합니다.
view에서 @login.errors[:base]의 느낌으로 표현할 수 있어요.
마무리
Reference
이 문제에 관하여(로그인 양식에 발리 데이 추가), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sibakenY/items/d07adc17d080520a9d0d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)