我目前正在使用具有以下功能的网站上工作:
我知道如何发送自己的附件,但我无法让它工作,所以用户上传自己的简历。现在,我希望将它们保存在本地,而不是使用像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>
答案 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)
参考文献: