Forum: Italian Ruby user group Problema con select_tag

Posted by Antonio Mugnani (ascige)
on 2009-06-15 18:28
Ciao a tutti.
Vi illustro il mio problema, confidando in un vostro intervento
risolutivo.

Ho due tabelle così fatte:

CREATE TABLE `technicals` (
  `id` int(11) NOT NULL auto_increment,
  `name` varchar(255) default NULL,
  `tel` varchar(255) default NULL,
  `cel` varchar(255) default NULL,
  `fax` varchar(255) default NULL,
  `email` varchar(255) default NULL,
  `created_at` datetime default NULL,
  `updated_at` datetime default NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;

CREATE TABLE `domains` (
  `id` int(11) NOT NULL auto_increment,
  `code` varchar(255) default NULL,
  `domain_name` varchar(255) default NULL,
  `structure_name` varchar(255) default NULL,
  `structure_address` varchar(255) default NULL,
  `adminc` varchar(255) default NULL,
  `techc` varchar(255) default NULL,
  `zonec` varchar(255) default NULL,
  `notes` text,
  `date` date default NULL,
  `created_at` datetime default NULL,
  `updated_at` datetime default NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=28 .

Vi listo il codice del mio controller domain

class DomainsController < ApplicationController
  active_scaffold :Domain do |config|
    config.theme = :blue
    config.label = "Lista domini"
    config.columns[:code].label = "Codice dominio"
    config.columns[:domain_name].label = "Dominio"
    config.columns[:structure_name].label = "Denominazione struttura"
    config.columns[:structure_address].label = "Sede"
    config.columns[:adminc].label = "Admin C"
    config.columns[:techc].label = "Tech C"
    config.columns[:zonec].label = "Zone C"
    config.columns[:notes].label = "Note"
    config.columns[:date].label = "Data di assegnazione del dominio"
    config.columns[:adminc].form_ui= :select
    config.list.columns = [:code, :domain_name, :structure_name,
:structure_address, :adminc, :techc, :zonec, :notes, :date]
    config.list.sorting = { :domain_name => :asc }
    config.create.columns = [:code, :domain_name, :structure_name,
:structure_address, :adminc, :techc, :zonec, :notes, :date]
    config.update.columns = [:code, :domain_name, :structure_name,
:structure_address, :adminc, :techc, :zonec, :notes, :date]
  end
end

Vorrei fare in modo che quando inserisco un nuovo dominio, nella casella
adminc mi compaia un combo che mi permetta di scegliere il nome del
tecnico direttamente dalla tabella technicals.

ho modificato il domain_helper come segue:

module DomainsHelper
  def adminc_form_column(record, input_name)
    technicals = Technical.find(:all, :order => "name").map{|x|
[x.name]+[x.id]}
    select_tag (:technicals_search, options_for_select(technicals))
  end
end

Riesco a far comparire i nomi dei tecnici, scelgo, ma nel momento in cui
do la create, mi memorizza tutti i dati della form domain ad esclusione
dell'adminc.

Dove sbaglio?
Sto impazzendo ma non ne vengo a capo.

Grazie in anticipo
Posted by Antonio Mugnani (ascige)
on 2009-06-15 19:54
> ho modificato il domain_helper come segue:
> 
> module DomainsHelper
>   def adminc_form_column(record, input_name)
>     technicals = Technical.find(:all, :order => "name").map{|x|
> [x.name]+[x.id]}
>     select_tag (:technicals_search, options_for_select(technicals))
>   end
> end
> 
> Riesco a far comparire i nomi dei tecnici, scelgo, ma nel momento in cui
> do la create, mi memorizza tutti i dati della form domain ad esclusione
> dell'adminc.
> 
> Dove sbaglio?
> Sto impazzendo ma non ne vengo a capo.
> 
> Grazie in anticipo

Credo di aver risolto!
Ho modificato l'helper in questo modo:

module DomainsHelper
  def adminc_form_column(record, input_name)
    technicals = Technical.find(:all, :order => "name").map{|x|
[x.name]}
    select_tag input_name, options_for_select(technicals)
  end
end

E' il miglior metodo o esiste qualche altra cosa che io disconosco ( e
ne disconosco il 99%)?
Comunque grazie
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.