编辑:我添加了文件字段,并更改了jobenrollment控制器中jobenrollment的创建 EDIT2:以下代码应该可以工作
我有一个可以完成工作申请的应用程序。我有一个用户模型(id,名称,电子邮件)和一个工作模型(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
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
将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
如果有人对Paperclip感到满意可以帮助我把这个时髦的东西弄清楚,那就太棒了。 Thaaanks:)
如果您需要更多信息,请告知我们
答案 0 :(得分:2)
file_field方法用于向表单添加文件上载输入。请务必将表单设为多部分。