设置上传和电子邮件文件的路径Ruby on Rails

时间:2014-09-08 15:41:43

标签: ruby-on-rails ruby ruby-on-rails-3

我目前正在使用具有以下功能的网站上工作:

  • 用户可以发布职位列表。
  • 感兴趣的用户可以点击工作列表,这会将他们带到申请页面。在这里,他们必须通过文件上传上传他们的简历,然后点击发送。
  • 简历现已发送至雇主电邮。

我知道如何发送自己的附件,但我无法让它工作,所以用户上传自己的简历。现在,我希望将它们保存在本地,而不是使用像S3这样的不同存储。我也在使用Paperclip和ActionMailer。

以下是我的代码:

listings_controller.rb:

def send_resume_email
        @listing = Listing.find(params[:id])
        @user = User.find_by_id(params[:id])
        UserMailer.new_resume(@user, @listing).deliver
        redirect_to findjobs_path, notice: 'Message sent'
    end

user_mailer.rb:

def new_resume(user, listing)
    @listing = listing
    @user = user
    attachments['header.png'] = File.read("#{Rails.root}/app/assets/images/header.png", mode:     "rb")
    @url = 'http://www.example.com'
    mail(to: listing.user.email, subject: 'Thanks for the awesome site')

end

apply.html.erb:

<div class="top">
<div class="container-content">
    <div class="container">
        <%= form_tag(listing_send_resume_email_path, :html => { :multipart => true}) do %>

           <%= file_field_tag :file %>
           <%= submit_tag nil, class: 'btn btn-default btn-about pull-right' %>
       <% end %>
  </div>
</div>
</div>

1 个答案:

答案 0 :(得分:0)

由于您不想存储简历,因此不需要Paperclip。您必须将文件参数从控制器传递到邮件程序。

在控制器中:

UserMailer.new_resume(@user, @listing, params[:file]).deliver

在梅勒:

def new_resume(user, listing, file)
    @listing = listing
    @user = user
    @url = 'http://www.example.com'
    attachments["#{file.original_filename}"] = File.read(file.path)
    mail(to: listing.user.email, subject: 'Thanks for the awesome site')
end

此外,您可能需要修改form_tag,如下所示:

form_tag(listing_send_resume_email_path, multipart: true)

参考文献: