2016-06-23 7 views
0

Итак, у меня есть приложение для рельсов, где recruiter публикует задание (рекрутер has_many jobs, все ассоциации настроены должным образом) и users могут нажать кнопку Apply, которая отправляет электронное письмо с помощью Action Mailer рекрутер для этой конкретной работы.Отправить электронное письмо в Rails Application

User и Recruiter - это две отдельные модели, созданные Devise.

Работа была порождена rails g scaffold Job .....

Heres то, что я до сих пор:

ApplyMailer.rb:

class ApplyMailer < ApplicationMailer 
    def new_apply(job) 
    @user = current_user 
    @job = job 
    mail to: @job.recruiter.email, 
     subject: "Someone whats to appy for #{@job.title}" 
    end 
end 

Работа # показать вид:

<%= button_to(apply_path, class:"btn btn-info") do %> 
    Apply 
<% end %> 

Jobs_controller.rb :

def sendemail 
    @job = Job.find(params[:id]) 
    ApplyMailer.new_apply(@job).deliver_now 
end 

routes.rb

post '/apply' => 'jobs#sendemail' 

Прежде всего, я не уверен, если я делаю это правильный путь для того, что я пытаюсь добиться. То, что я пытаюсь сделать, это:

Таким образом, кнопка находится на странице jobs#show, она должна принять в качестве аргумента job и отправить электронное сообщение на адрес associated recruiter. current_user (User model) будет пользователем, пытающимся подать заявку на задание, поэтому в представлении электронной почты будет указано имя пользователя (см. Ниже).

new_apply.html.erb:

<div class=""> 
    <h2><%= @user.profile.name %> want to apply for the job</h2> 
</div> 

Вопрос после нажатия кнопки как можно по электронной почте направляется recruiter о job пост. В электронном письме должно быть указано имя и адрес электронной почты current_user. Выше это то, что я пробовал, но не отправляется электронное письмо.

Благодаря

+0

Пожалуйста, задать вопрос, а не говорить, что вы сделали! –

+0

Вы должны передать пользователю пользователя, почта не знает, что такое 'current_user' –

+0

В чем вопрос? –

ответ

2

в контроллере

def create 
    # creating your job 
    if @job.create 
    ApplyMailer.new_apply(current_user, job).deliver_now 
    else 
    # what you want 
    end 
end 

и добавить к Мейлер ваш пользователь

class ApplyMailer < ApplicationMailer 
    def new_apply(user, job) 
    @user = user 
    @job = job 
    mail to: @job.recruiter.email, 
     subject: "Someone whats to appy for #{@job.title}" 
    end 
end 

BTW

вы должны использовать маршруты в соответствии с CRUD согласно Rails doc

1

Используйте Mail Mailer для отправки почты.

class UserMailer < ApplicationMailer 
    default from: '[email protected]' 

    def welcome_email(user) 
    @user = user 
    @url = 'http://example.com/login' 
    mail(to: @user.email, 
     subject: 'Welcome to My Awesome Site', 
     template_path: 'notifications', 
     template_name: 'another') 
    end 
end 

Для получения дополнительной информации по этой ссылке: -

http://guides.rubyonrails.org/action_mailer_basics.html