Q. What resource do readers recommend for referencing regarding best
practices for form construction in Rails?
I have the following situation: location_type of Locations may have one
of five (5) possible codes. Presently I have these codes listed in a
drop-down select constructed thusly:
Location type
<%= f.select :location_type,
[
['MAIN - Main Address', 'MAIN'],
['POST - Postal Delivery', 'POST'],
['DELV - Package Delivery', 'DELV'],
['SHIP - Package Shipping', 'SHIP'],
['OTHR - Other', 'OTHR'],
],
:selected => 'MAIN',
:size => 4
-%>
Should this instead be constructed so that the model, Locations, has
these virtual attributes:
valid_location_type[]=
[
['MAIN - Main Location','MAIN'],
['POST - Postal Delivery', 'POST'],
...
]
default_location_type = 'MAIN'
and then the view could have this instead:
<%= f.select :location_type,
@location.valid_location_type,
:selected => @location.default_location_type,
:size => 4
Would this even work?
Comments?
On Nov 5, 7:31 pm, James B. [email protected]
wrote:
default_location_type = 'MAIN'
Personally I would have it as a constant of the Location class, ie
class Location …
VALID_TYPES = […]
end
Fred
Frederick C. wrote:
On Nov 5, 7:31�pm, James B. [email protected]
wrote:
� � default_location_type = ‘MAIN’
Personally I would have it as a constant of the Location class, ie
class Location …
VALID_TYPES = […]
end
Fred
Point taken.
Nonetheless, in the interim I have tested it and this does indeed work
as expected. However, I used private methods and public getters to
implement.
def valid_location_type
virt_valid_type
end
private
def virt_valid_type
vvt =
[
[‘MAIN - Main Address’, ‘MAIN’],
[‘POST - Postal Delivery’, ‘POST’],
[‘DELV - Package Delivery’, ‘DELV’],
[‘SHIP - Package Shipping’, ‘SHIP’],
[‘OTHR - Other’, ‘OTHR’]
]
end
But my question remains: Is this the preferred idiom or is there
another recommended way to do this?
Looks like a good place to give this a spin:
Basically, use a pure-ruby class to wrap the location types and let it
support an ActiveRecord like interface (mainly find and all). Then
you can do collection_select the way you would with a normal ARec
model.
Depending on which version of Rails you’re working with you may also
check into PassiveRecord. It’s a pretty advanced version of the same
concept. Unfortunately it has dependencies on older versions of ARec.
On Nov 5, 3:02 pm, James B. [email protected]
I think Fred’s given the preferred idiom. It’s simple & it works.