0

编辑:我添加了文件字段,并在 jobenrollment 控制器中更改了 jobenrollment 的创建 EDIT2:以下代码应该可以工作

我有一个可以申请工作的应用程序。我有一个用户模型(id、name、email)和一个工作模型(id、title)。我希望我的用户能够申请工作。所以我创建了第三个模型,称为 Jobenrollment (id, user_id, job_id),其中“user_id”在“User”中引用“id”,“job_id”在“Job”中引用“id”

我有一个登录系统(按照 Rails 教程手工制作)。因此,我有一个名为 current_user 的变量,用于当前登录的用户。到目前为止,我的 UI 如下: - 用户已登录 - 他们打开工作的显示页面,查看有关工作的所有信息,然后可以单击通过此表单的应用按钮(位于我渲染的作业视图文件夹的一部分中):

<%= form_for(current_user.jobenrollments.build(job_id: @job.id), :html => { :multipart => true }) do |f| %>

  <%= f.hidden_field :job_id %>
      <%= f.file_field :resume %>
  <%= f.submit "Apply", :class => "btn btn-large btn-success" %>

<% end %>

用户模型如下(user.rb):

class User < ActiveRecord::Base

has_many :jobenrollments, dependent: :destroy
has_many :jobs, :through => :jobenrollments


def unapply!(job)
    jobenrollments.find_by_job_id(job.id).destroy
end

工作.rb

has_many :jobenrollments, dependent: :destroy
has_many :users, :through => :jobenrollments

jobenrollments_controller.rb

def create
   @job = Job.find(params[:jobenrollment][:job_id])
   current_user.jobenrollments.create!(params[:jobenrollment])
   redirect_to @job
end

def destroy
    @job = Jobenrollment.find(params[:id]).job
    current_user.unapply!(@job)
    redirect_to root_path
end

到目前为止一切正常。现在我想对其进行扩充,并在使用 Paperclip 注册时添加文件上传。我在如何将文件字段合并到我的表单中时遇到问题..

我跑了:

rails generate paperclip jobenrollment resume

将 Paperclip 添加到 jobenrollments 后,我的 jobenrollment 模型如下:

 class Jobenrollment < ActiveRecord::Base
    belongs_to :user
     belongs_to :job
    validates_uniqueness_of :user_id, :scope => :job_id

   #resume attachment using Paperclip, cf doc in Github readme
   has_attached_file :resume, url: "/resumes/:id/:basename.:extension",
                           path: ":rails_root/public/resumes/:id/:basename.:extension"

    #validates_attachment_presence :resume

结尾

== Schema Information
# Table name: jobenrollments
    id                  :integer         not null, primary key
    user_id             :integer
    job_id              :integer
    created_at          :datetime        not null
    updated_at          :datetime        not null
    resume_file_name    :string(255)
    resume_content_type :string(255)
    resume_file_size    :integer
    resume_updated_at   :datetime 

如果任何对 Paperclip 感到满意的人可以帮助我弄清楚这个时髦的东西,那就太棒了。塔安克斯 :)

如果您需要更多信息,请告诉我

4

1 回答 1

2

file_field 方法用于向表单添加文件上传输入。确保将表单设为多部分。

于 2012-07-03T01:16:17.637 回答