[rails] 사용자가 등록할 때name 표시줄에 @를 자동으로 추가하는 방법
개시하다
첫 번째 학자가 투자조합 제작에 열중하는 걸 기록해 놓을게요.
Tiwtter의 계정 ID처럼 특정 열의 첫머리에 @를 붙이는 방법.많은 사람들이 hoto Forio를 만들 때 먼저 사용자의 이름과 계정에 @을 붙인다고 생각합니다.
너무 초보적인 내용이라 찾아봤자 바로 그런 기사를 찾지 못해 남았다.
결론
4before_save
모델로 설정합니다.
상기 방법으로 로그인, 로그아웃할 때도 before저장이 실행되었기 때문에 로그인할 때마다 @이 증가하기 때문에 다른 방법으로 실행되었습니다.(특정 컨트롤러만 before save를 실행하는 방법을 몰라요.)
코드 및 설명
이번 User 모델 어카운트.name 열에 @
controllers/users_controller.rbdef create
@user = User.new(user_params)
@user.account_name = "@" + @user.account_name #ここで@を付ける
if @user.save
@user.send_activation_email
flash[:info] = "メールを確認してアカウントを有効化して下さい"
redirect_to root_url
else
render "new"
end
end
def update
@user = User.find(params[:id])
if @user.update_attributes(user_params)
@user.account_name = "@" + @user.account_name
@user.save
flash[:success] = "プロフィールを編集しました"
redirect_to @user
else
render 'edit'
end
end
def edit
@user = User.find(params[:id])
@account_name = @user.account_name
@account_name.slice!(0)
@account_name
end
views/users/edit.html.slim= form_with model:@user, local:true do |f|
= f.label :account_name, 'アカウントID'
.input-group
.input-group-prepend
.input-group-text @
= f.text_field :account_name, class: 'form-control' , placeholder: "9文字まで", value: @account_name
form에서 보내온 값을 저장하기 전에 가공합니다.
또한 프로필 편집 페이지에서 폼에 초기 값을 설정할 때 @ 이외의 값을 입력해야 합니다.
따라서 컨트롤러의 편집 동작에서 슬라이스 방법으로 @을 삭제했습니다.
변수를 form의value 속성의 초기 값으로 설정합니다.
콜백 처리 정보
http://www.techscore.com/blog/2012/12/25/rails%E3%81%AE%E3%82%B3%E3%83%BC%E3%83%AB%E3%83%90%E3%83%83%E3%82%AF%E3%81%BE%E3%81%A8%E3%82%81/
슬라이스 방법
http://doc.code161.com/ruby/string-delete-method/
참고로, 이것은 new 템플릿의 코드입니다.
views/users/new.html.slim#slim,bootstrap使用
= form_with model: @user, local: true do |f|
(中略)
= f.label :account_name, 'アカウントID'
.input-group
.input-group-prepend
.input-group-text @
= f.text_field :account_name, class: 'form-control' , placeholder: "9文字まで"
끝맺다
누구한테 도움이 됐으면 좋겠어요.
더 똑똑한 방법이 있으면 알려주세요.
또 잘못된 점이 있으면 메시지를 남겨주세요.
참고 자료
https://qiita.com/KeisukeYoshida0220/items/e1ce152ac8d89845aab3
Reference
이 문제에 관하여([rails] 사용자가 등록할 때name 표시줄에 @를 자동으로 추가하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tsubasaweb1/items/f7ad62cb3bcc7d9ae7dc
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
def create
@user = User.new(user_params)
@user.account_name = "@" + @user.account_name #ここで@を付ける
if @user.save
@user.send_activation_email
flash[:info] = "メールを確認してアカウントを有効化して下さい"
redirect_to root_url
else
render "new"
end
end
def update
@user = User.find(params[:id])
if @user.update_attributes(user_params)
@user.account_name = "@" + @user.account_name
@user.save
flash[:success] = "プロフィールを編集しました"
redirect_to @user
else
render 'edit'
end
end
def edit
@user = User.find(params[:id])
@account_name = @user.account_name
@account_name.slice!(0)
@account_name
end
= form_with model:@user, local:true do |f|
= f.label :account_name, 'アカウントID'
.input-group
.input-group-prepend
.input-group-text @
= f.text_field :account_name, class: 'form-control' , placeholder: "9文字まで", value: @account_name
#slim,bootstrap使用
= form_with model: @user, local: true do |f|
(中略)
= f.label :account_name, 'アカウントID'
.input-group
.input-group-prepend
.input-group-text @
= f.text_field :account_name, class: 'form-control' , placeholder: "9文字まで"
누구한테 도움이 됐으면 좋겠어요.
더 똑똑한 방법이 있으면 알려주세요.
또 잘못된 점이 있으면 메시지를 남겨주세요.
참고 자료
https://qiita.com/KeisukeYoshida0220/items/e1ce152ac8d89845aab3
Reference
이 문제에 관하여([rails] 사용자가 등록할 때name 표시줄에 @를 자동으로 추가하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tsubasaweb1/items/f7ad62cb3bcc7d9ae7dc텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)