0

編集:ファイルフィールドを追加し、ジョブ登録コントローラーでのジョブ登録の作成を変更しましたEDIT2:次のコードが機能するはずです

求人応募を行うアプリがあります。ユーザー モデル (ID、名前、電子メール) とジョブ モデル (ID、役職) があります。ユーザーが求人に応募できるようにしたい。そこで、「User」の「id」を参照する「user_id」と「Job」の「id」を参照する「job_id」を使用して、Jobenrollment (id、user_id、job_id) という 3 番目のモデルを作成しました。

私はログインシステムを持っています (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

Jobenrollments に Paperclip を追加すると、私の 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 

ペーパークリップに慣れている人がこのファンキーなことを理解するのを手伝ってくれたら、それは素晴らしいことです. ありがとう:)

また、さらに情報が必要な場合はお知らせください

4

1 に答える 1

2

file_field メソッドは、ファイル アップロード入力をフォームに追加するために使用されます。フォームは必ずマルチパートにしてください。

于 2012-07-03T01:16:17.637 に答える