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 th开发者_如何学Pythonis 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.
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 %>
Put it in config/initializers/constants.rb
and it will be availble everywhere.
精彩评论