2012-01-06 3 views
1

나는 레일스 3에 대한 몇 가지 기본 자습서를 작성했습니다. 목표는 능력과 활동에 대한 커뮤니티 웹 사이트입니다. Devise를 인증에 사용하고 있습니다. 아바타가 잘 구성된 사용자 프로필을 만드는 데는 (클립으로 감사).레일 3 : 사용자 프로필에서 메시지를 보내려면 문의 양식

다음 단계로 등록 된 사용자가 자신의 프로필 페이지에서 전자 메일을 보내도록 설정하려고합니다.

class NotificationsMailer < ActionMailer::Base 

    default :from => "[email protected]" 
    default :to => "[email protected]" 

    def new_message(message) 
    @message = message 
    mail(:subject => "[YourWebsite.tld] #{message.subject}") 
    end 

end 

내 질문 : 이 http://matharvard.ca/posts/2011/aug/22/contact-form-in-rails-3/

이 튜토리얼의 메일러 클래스는 다음과 같습니다 나는 Google Apps를 사용하여 연락처 양식을 만드는 좋은 자습서를 발견 에 가장 좋은 방법은 대체 무엇을 당신 @ youremail .dev과 수신기 전자 메일 주소? (사용자 모델에서)

미리 감사드립니다!

답변

1

new_message을 수정하여 이메일을 보내려는 사용자 (또는 사용자 목록)를 수락 할 수 있습니다. 원할 경우 전자 메일 주소 배열. 그런 다음 수신자의 이메일 주소를 mail 방법으로 :to 옵션으로 전달합니다.

def new_message(receiver, message) 
    @message = message 
    mail(:subject => "[YourWebsite.tld] #{message.subject}", 
     :to => receiver.email_address) # or something similar 
end 

그런 다음 API 참조 읽으려면이

NotificationEmail.new_message(a_user, a_message).deliver 

처럼 메일러를 호출 할 수 있습니다 here 또는 here (내가 APIdock를 선호).

ActionMailer에 대한보다 포괄적 인 가이드는 here입니다. 레일스를 처음 사용하신 분은 here 안내를 참조하십시오.

+0

정말 고마워! 어떤 사용자에게 메시지를 보내야하는지 컨트롤러에 알리기 위해 메시지 양식에 숨겨진 필드를 추가했습니다. 좋아요. <% = form.hidden_field : user_id, : value => @ user.id %> –

+0

@ user1133942 위대한! 앱의 특수성에 대해 많이 알지 못합니다. 악의적 인 사용자가 숨겨진 필드의 가치를 바꿀 수 있으며 메시지를 다른 사람에게 보낼 수 있습니다. 그래서, 이것이 받아 들일 수 없다면, 당신은 그것이 일어나지 않도록해야합니다. – Behrang

+0

CanCan을 사용하여 사용자 권한을 제한하고 로그인 한 회원 만 전자 메일을 보낼 수 있도록 허용하므로 현재 사용자에게 필요한 권한이없는 경우 메시지 컨트롤러가 보내는 것을 금지합니다. 하지만 모든 잠재적 위협을보기 위해 잠시 레일즈를 다뤄야 만합니다. 힌트를 가져 주셔서 감사합니다! :-) –