2012-07-01 23 views
0

編輯:我添加的文件領域,改變了jobenrollment控制器 EDIT2的jobenrollment的創作:下面的代碼應該工作基於連接表使用回形針:工作申請

我有一個應用程序,並工作應用。我有一個用戶模型(ID,名稱,電子郵件)和一個工作模型(ID,標題)。我希望我的用戶能夠申請一份工作。所以我創建了第三個叫Jobenrollment(id,user_id,job_id)的模型,在user中引用了「user」和「job_id」引用了「Job」中的「id」

我有一個登錄系統手動遵循Rails教程)。因此,我有一個名爲current_user的變量,用於當前登錄的用戶。我的用戶界面如下所示: - 用戶登錄 - 他們打開作業的顯示頁面,查看有關作業的所有信息,以及可以點擊通過這種形式的應用按鈕(在部分生活,在工作的看法文件夾,我渲染):

<%= 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 

job.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 

將回形針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 

如果任何人都喜歡回形針可以幫助我的身材這個時髦的東西了,那真棒。 Thaaanks :)

也讓我知道如果您需要了解更多信息

回答

2

的是,file_field方法用於將文件上傳輸入添加到您的形式。一定要使表單多部分。