Question

I have a constant that is only used in views, but it's used in different ways in different places. It's an array of option names, and is used for select boxes, but I also use this in other views to see if strings are found in this array, and respond accordingly.

What's the best way to handle this to keep DRY?

I initially created a constant in a helper, but that doesn't seem to be accessible in the views.

I've since switched to creating a method in a helper, that does nothing except return the constant. However, this really seems to be against the spirit of Rails, since now essentially I'm using a lower-cased constant.

I could of course stick it in a model, but it's really got nothing to do with any of the models.

Was it helpful?

Solution

You can define constants in helpers, but you will need to refer to them by their fully qualified name in your views.

application_helper.rb

module ApplicationHelper
  MyConstant = "something"
end

In any view:

<%= ApplicationHelper::MyConstant %>

OTHER TIPS

Put it in config/initializers/constants.rb and it will be availble everywhere.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top