Me gustaría asignar dos "tipos" de etiquetas diferentes (categorías de sector y etiquetado libre) a un modelo de compañía que usa acts_as_taggable_on. NB: ¡Soy nuevo en RoR!¿Cómo aplicar etiquetas con acts_as_taggable_on usando casillas de verificación?
Esto es fácil de hacer solo con campos de entrada de texto estándar, pero me gustaría usar casillas de verificación en un tipo (una etiqueta de categoría de sector fija que está predefinida) y luego permitir que el usuario agregue etiquetas separadas por comas en un campo de entrada.
he jugado un poco con este problema de varias maneras, ... uno inspirado por this question ... pero no puedo conseguir que funcione
Esto es lo que tengo hasta ahora:
# models/company.rb
class Company ...
acts_as_taggable_on :tags, :sectors
has_many :taggings,
:as => :taggable,
:include => :tag,
:class_name => "ActsAsTaggableOn::Tagging",
:conditions => { :taggable_type => "Company" }
has_many :sector_tags,
:through => :taggings,
:source => :tag,
:class_name => "ActsAsTaggableOn::Tag",
:conditions => {:context => "sectors"}
end
en la forma (usando joya simple_form) tengo ...
# views/companies/_form.html.haml
= simple_form_for @company do |f|
= f.input :name
= f.association :sector_tags, :as => :check_boxes, :hint => "Please click all that apply"
= f.input :tag_list
= f.button :submit, "Add company"
Y en mi controlador de la empresa tengo
# controllers/companies_controller.rb
def create
@company = current_user.companies.build(params[:company])
if @company.save
...
end
Pero esto provoca un error de validación:
ActiveRecord::RecordInvalid in CompaniesController#create
Validation failed: Context can't be blank
Puede cualquier alusión a cómo puedo hacer esto bien?
Una pregunta relacionada es si esta es una buena manera de hacerlo. ¿Sería mejor que solo usara un modelo de Categoría para asignar etiquetas sectoriales a través de un modelo conjunto?
Gracias!
Tu método puede ser el siguiente: def get_sectors; Company.sector_counts.collect (&: name); fin –