ruby-on-rails - has_one - rails references
cómo implementar la funcionalidad jobpost que tiene 3 categorías definidas (2)
Lo que quiero hacer es crear un modelo de ubicación que se utilizará para publicar trabajos para 3 categorías fijas, es decir, pasantía, empresa y autónomo. Habrá un menú de ubicación que tendrá 3 menues como pasantía, corporativo y autónomo, y se basará en la selección del usuario. , para estas 3 categorías se mostrará el mismo formulario de publicación de trabajo para crear puestos de trabajo. Mientras se muestra jobposts, la vista diferente se mostrará según la categoría.
No entiendo cómo debo implementar esto. Si debo crear una ubicación y categorías como un modelo diferente y asignar una asociación como tiene muchas categorías en ubicación y pertenece a la categoría, pero si lo hago, en el modelo de categorías tengo 3 opciones fijas y no voy a aceptar esa opción del usuario, entonces, ¿cómo puedo agregar estas 3 opciones en el modelo que se va a arreglar y agregar puestos de trabajo para ellas por categoría?
¿Cómo puedo implementar esta colocación?
Es simple que puedes lograr de varias maneras una forma es crear job_type que tiene una de 3 categorías y dar dropdown mientras creas una publicación de trabajo.
Para que sea fácil de encontrar cree alcance para 3 categorías como
scope :freelance,where("job_type = ?",''freelance'') ....
JobPost.freelance
ofrece un puesto de trabajo independiente.
Defina los modelos como
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
Agregue campos a Jobpost como para crear campos (resource_id: integer, resource_type: string)
#jobposts table
t.references :resource, :polymorphic => true
La vista como
= 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
El ayudante Jobpost como
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
Use javascript para mostrar los campos de la subcategoría (freelance, etc.) cuando se hace clic en el enlace de Freelancer. cuando se envía el formulario, se envían todos los campos para todas las subcategorías, pero se filtran en el método ''resource_attributes =''.