如何实现具有3个固定分类的jobpostfunction

我想要做的是创建放置模型,用于发布3个固定类别的工作,即实习,公司和自由职业。将有一个安置菜单,将有3个menues作为实习,公司和自由职业者,并根据用户选择,对于这3个类别,将显示相同的职位发布表格以创建职位。 在显示工作岗位时,将根据类别显示不同的视图。

我没有得到我应该如何实现这一点。我是否应该创建位置和类别作为一个不同的模型,并给予关联作为多个类别的位置和属于类别的位置,但如果我这样做,在类别模型我有3固定的选择,我不会接受用户的选择,那么我如何在模型中添加这3个选项将被修复并按类别添加它们的工作岗位?

我该如何实现这个展示位置?

很简单,您可以通过各种方式实现创建job_type,其中包含3个类别之一,并在创建职位时提供下拉列表。

为了便于找到3个类别的创建范围

scope :freelance,where("job_type = ?",'freelance') .... 

JobPost.freelance提供自由职业岗位。

将模型定义为

 Class Jobpost belongs_to :resource, :polymorphic => true, :dependent => :destroy accepts_nested_attributes_for :resource def resource_attributes=(params = {}) self.resource = spec_type.constantize.new unless self.resource self.resource.attributes = params.select{|k| self.resource.attribute_names.include?(k) || self.resource.class::ACCESSOR.include?(k.to_sym)} end end class Freelancer has_one :jobpost, :as => :resource end 

添加字段到Jobpost以创建字段(resource_id:integer,resource_type:string)

 #jobposts table t.references :resource, :polymorphic => true 

视图为

 = form_for(@jobpost, :url => jobposts_path, :method => :post) do |f| = fields of Jobpost = f.fields_for :resource, build_resource('freelancer') do |freelancer| = fields of Freelancer 

Jobpost助手为

 module JobpostsHelper def build_resource(klass) klass = "{klass.capitalize}" object = eval("#{klass}.new") if @jobpost.resource.class.name == klass object = @jobpost.resource end return object end end 

单击Freelancer的链接时,使用javascript显示子类别(自由职业者等)的字段。 提交表单时,会提交所有子类别的所有字段,但会在“resource_attributes =”方法中过滤掉它们。