让用户上传文件并发送给列表用户(Ruby on Rails)

时间:2014-09-08 02:05:00

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

我目前正在使用具有以下功能的网站上工作: 用户(雇主)​​可以发布职位列表。有兴趣的用户可以点击工作列表,这会将他们带到申请页面。在这里,他们必须通过文件上传上传他们的简历,然后点击发送。简历现在发送给雇主的电子邮件。 所以我得到它的工作,电子邮件发送给列表用户。我也知道如何发送自己的附件。 然而,我无法让用户上传自己的简历。现在我想让它们保存在本地,而不是使用像S3这样的不同存储。

这是我的代码

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 :(得分:1)

要上传文件,您可以使用

1.Paperclip gem https://github.com/thoughtbot/paperclip

2.Carrierwave gem https://github.com/carrierwaveuploader/carrierwave

他们都支持S3

有一个很好的使用carrierwave的截屏视频可能有助于http://railscasts.com/episodes/253-carrierwave-file-uploads