I'm running Rails 4.
I have a model called Challenge
, and in my database I'm storing the status
of each challenge in terms of 0-4.
But 0-4 isn't very semantic so I want to define a few variables (I'm assuming a constants) so that in any controller or view I can access the number by calling the constant:
# Challenge.rb class Challenge < ActiveRecord::Base SUGGESTED = 0 APPROVED = 1 OPEN = 2 VOTING = 3 CLOSED = 4 end
I want to access these in my view:
# challenge/_details.html.erb <% if @challenge.status == CLOSED %> Challenge is closed, broheim! <% end %>
But my view doesn't want to render.
uninitialized constant ActionView::CompiledTemplates::CLOSED
What's the best way to set my status variables so that they may be accessed everywhere I need them? (i.e, anywhere the @challenge
variable is present)
You should access them as following:
Challenge::CLOSED
Since your CLOSED
constant is defined within a class, you need to access the constant using the scope resolution operator. So if your view you would check it like:
# challenge/_details.html.erb <% if @challenge.status == Challenge::CLOSED %> Challenge is closed, broheim! <% end %>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With