Hello RoR World- i''ve defined a number of string arrays in /lib/valid.rb which i''m using to validate input for various fields, e.g. module VALID TITLES = [ ''Mr.'', ''Mrs.'', ''Ms.'', ''Dr.'', ''Sir'', ''RoRN00b'', ''PhD.'', ''DHH'' ] end In my models I''ve done the following, which is working great for my validations: (from .../models/client.rb) include VALID validates_inclusion_of :title, :in => TITLES, :message => ''%s is Invalid - please enter a valid Title.'' Now I''d like to simplify my user''s lives by utilizing these same constants as the basis of my collection_selects in my assorted partials, e.g. (from .../views/clients/_form.erb) <%= form.collection_select( :title, TITLES.all, TITLES[], TITLES[] )%> My two questions: 1. I''m receiving the error: uninitialized constant ActionView::Base::CompiledTemplates::TITLES despite having my obligatory ''include VALID'' statement in my client.rb model; tried adding to controller, no joy. _help_. 2. I''m sure my collection_select syntax above is broken; if/when i get past the unintialized constant error i''m sure I can sort it relatively quickly (i hope), but if anyone''s done this before and cares to share their code-fu I''d appreciate it. Thanks much- --Jeff Coon
Believe that <%= form.select( :title, options_for_select(TITLE), { :prompt => true } ) should work, if I can get the TITLES constant to be recognized... Thoughts? Thanks- --Jeff
Matt Jones
2009-Apr-26 15:24 UTC
Re: form.collection_select utilizing CONSTANT string array?
The containing module for the ERB code isn''t the model or the controller, it''s part of ActionView::Base. Try explicitly qualifying the constant as Client::TITLES. Also, module names are not traditionally spelled in all-caps, but that''s just a style thing. --Matt Jones On Apr 24, 5:52 pm, Coondog <jefec...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> Believe that > <%= form.select( :title, options_for_select(TITLE), { :prompt => > true } ) should work, if I can get the TITLES constant to be > recognized... > > Thoughts? > > Thanks- > --Jeff
Hi Matt- Thanks much -- qualifying fixed it. <%= f.select( :title, Contact::TITLES, { :prompt => true } ) %><br /> Really appreciate the quick tip- --Jeff On Apr 26, 8:24 am, Matt Jones <al2o...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> The containing module for the ERB code isn''t the model or the > controller, it''s part of ActionView::Base. > > Try explicitly qualifying theconstantas Client::TITLES. > > Also, module names are not traditionally spelled in all-caps, but > that''s just a style thing. > > --Matt Jones > > On Apr 24, 5:52 pm, Coondog <jefec...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > Believe that > > <%= form.select( :title, options_for_select(TITLE), { :prompt => > > true } ) should work, if I can get the TITLESconstantto be > > recognized... > > > Thoughts? > > > Thanks- > > --Jeff