TIL
# 211119 TIL ([Ruby, slim] 리다이렉션 하기, 버튼 클릭하면 액션 실행 link_to)
inthess
2021. 11. 22. 11:39
장기현장실습
PLSnote 이슈
#2644 그룹에 탈퇴신청을 하고 일정기간이 지나면 탈퇴가 되는 기능 이슈 진행중
- 탈퇴 버튼을 클릭하면 job이 생기게 까지 구현했으니, 탈퇴 하기 버튼을 누르면 사용자에게 탈퇴 신청 취소하기 버튼이 보이게 하고, 신청 취소버튼을 누르면 job을 없애주는 cancel_withdraw가 실행되도록 구현하기
- Job_id가 없으면 탈퇴하기 버튼 + withdraw, 있으면 탈퇴 신청 취소하기 + cancel_withdraw 가 동작하도록 group_apply.html.slim 구현
- Job_id는 group_user에 있는 것을 사용해야해서 each문을 돌리는 table을 group_user로 수정
- if current_user.group_users.present? - current_user.group_users.each do |group_user| .card.mb-2 .card-body .row .col-md-2 h4 .badge.badge-success | #{t('.participating')} .col h4= group_user.group.group_name .col = "#{t('group_manager_name')} : #{User.find(group_user.group.group_manager_id).name}" .col-auto - if group_user.job_id.nil? = link_to withdraw_user_group_path(current_user.id, group_user.group.id, {group_id: group_user.group.id}), method: :post, class: 'btn btn-outline-danger' i.fa.fa-minus-circle ' #{t('.withdraw')} - else = link_to cancel_withdraw_user_group_path(current_user.id, group_user.group.id, {group_id: group_user.group.id}), method: :post, class: 'btn btn-danger' i.fa.fa-undo ' #{t('.cancel_withdraw')}
- Job_id는 group_user에 있는 것을 사용해야해서 each문을 돌리는 table을 group_user로 수정
- 버튼을 클릭하고 그 변경사항이 자동으로 바뀌기 위해서는 redirection 필요 -> group_apply 로 이동하도록 코드 추가
def withdraw job = DeleteGroupUserJob.set(wait: 60.day).perform_later(params[:group_id] , current_user.id) if job @group_user = current_user.group_users.find_by(group_id: params[:group_id]) @group_user.update job_id: job.provider_job_id redirect_to group_apply_user_path end end def cancel_withdraw @group_user = current_user.group_users.find_by(group_id: params[:group_id]) Sidekiq::ScheduledSet.new.find_job(@group_user.job_id)&.delete @group_user.update job_id: nil redirect_to group_apply_user_path end
- Job_id가 없으면 탈퇴하기 버튼 + withdraw, 있으면 탈퇴 신청 취소하기 + cancel_withdraw 가 동작하도록 group_apply.html.slim 구현