홈>
사용자 표에 언급 된 사용자의 주소로 이메일을 보내기 위해 사용자 쇼 페이지에 버튼을 추가하려고했습니다. 초대 이메일 보내기를 클릭하면정의되지 않은 메소드 '이메일' nil : NilClass의 경우. 내가 겪고있는 실수를 알려주세요.
routes.rb
get 'send_invitation_email', to: 'users#invitation_confirmation'
invitation_confirmation.text.erb
Hi,
Thank you for setting up an account. Please click on the link in that email to start using the system.
<%= edit_password_reset_url(@user.reset_token, email: @user.email) %>
user_mailer.rb
def invitation_confirmation(user)
@user = user
mail(:to => "<#{user.email}>", subject: "Notification")
end
users_controller.rb
def invitation_confirmation
@user = User.find(params[:id])
UserMailer.invitation_confirmation(@user).deliver
flash[:notice] = "Invitation email has been sent."
redirect_to user_path(@user)
end
show.html.erb
<% if logged_in? && current_user.admin? || current_user.superadmin? %>
<%= link_to "Send Invitation Email", send_invitation_email_path(@user), class: "btn btn-xs btn-primary" %>
<% end %>
업데이트
mail(:to => "<#{user.email}>", subject: "Notification")
- 답변 # 1
- 답변 # 2
이것을 시도하십시오
def invitation_confirmation(user) mail(to: user.email, subject: "Notification") end
- 답변 # 3
@user 객체가 null이 아닌 경우 show.html.erb 코드를 다음과 같이 변경하십시오 :
<% if logged_in? && current_user.admin? || current_user.superadmin? %> <%= link_to "Send Invitation Email", send_invitation_email_path(id: @user.id), class: "btn btn-xs btn-primary" %> <% end %>
- 답변 # 4
def invitation_confirmation @user = User.find(params[:format]) **@user.create_reset_digest** UserMailer.invitation_confirmation(@user).deliver flash[:notice] = "Invitation email has been sent." redirect_to user_path(@user) end
굵은 글씨로 실수했습니다. 나는 _reset_digest를 만들지 않았다. 지금 일하고 있습니다. 모두 감사합니다.
관련 질문
- Ruby -모델에 표시된 마이그레이션 참조
- Rails Console :이 LockFile에서 Bundler 2 이상을 사용해야합니다.
- Rails 5: 지원 중단 경고: ActiveRecord::Base의 인스턴스를 `exists?`로 전달하고 있습니다. ..모르겠어
- Ruby에서 지역 보석은 무엇입니까?
- Rails 콘솔 실행 실패
- 연결된 열에 대한 레일 유효성 검사 고유성
- 레일에서 DELETE 요청을 시도할 때 500 내부 서버 오류 및 잘못된 테이블 검색
- ruby : Rails 5 -중첩 모델 상위 모델이 하위 모델보다 먼저 저장되지 않기 때문에 저장 롤백
- 이 버그를 수정하기 위해 이미지 자리 표시자를 어떻게 추가합니까?
- Symbol과 100의 비교 실패
이 오류는 UserMailer.invitation_confirmation 메소드 내부에 사용자가 없음을 나타냅니다.
시도 :