フィールド(RESOURCE_ID:整数、RESOURCE_TYPE:文字列)を作成するよう
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にフィールドを追加してモデルを定義
= 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
として
#jobposts table
t.references :resource, :polymorphic => true
ビューをジョブポストヘルパーとして
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 ='メソッドで除外されます。
私はこのオプションを考えましたが、私はドロップダウンではない3つのリンクを提供しています... – NJF