0

私がやりたいことは、インターンシップ、企業、フリーランスの 3 つの固定カテゴリの求人を掲載するために使用される配置モデルを作成することです。配置のメニューには、インターンシップ、企業、フリーランスの 3 つのメニューがあり、ユーザーの選択に基づいています。 、これらの 3 つのカテゴリでは、求人情報を作成するために同じ求人情報フォームが表示されます。求人情報を表示している間、カテゴリに基づいて異なるビューが表示されます。

これをどのように実装する必要があるのか​​ わかりません.配置とカテゴリを別のモデルとして作成し、配置に多くのカテゴリがあり、カテゴリの配置に属しているように関連付けを与える必要があるかどうか、しかしそのようにすると、カテゴリモデルには3つあります固定された選択肢であり、ユーザーからのその選択を受け入れるつもりはないので、修正されるモデルにこれらの 3 つの選択肢を追加し、カテゴリごとにジョブポストを追加するにはどうすればよいですか?

この配置をどのように実装できますか?

4

2 に答える 2

0

さまざまな方法で達成できるのは簡単です.1つの方法は、3つのカテゴリのいずれかを持つjob_typeを作成し、求人投稿の作成中にドロップダウンを提供することです.

簡単に見つけられるように、次のような 3 つのカテゴリのスコープを作成します

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

JobPost.freelanceフリーランスの求人情報を提供します。

于 2012-05-10T13:54:10.767 に答える
0

モデルを次のように定義します。

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: 整数、resource_type: 文字列)

#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 のリンクをクリックしたときにサブカテゴリ (freelancer など) のフィールドを表示するには、javascript を使用します。フォームが送信されると、すべてのサブカテゴリのすべてのフィールドが送信されますが、'resource_attributes=' メソッドで除外されます。

于 2012-08-28T07:03:36.103 に答える