Hi I have a rails application with one model that I want to show a loop of in the footer which appears on every page.
In the the Variety Model
class Variety < ApplicationRecord
belongs_to :request
end
I have found that adding:
@varieties = Variety.all
to every view works but i am sure this is bad practice.
for this case, it's better to do something like this, in your application controller, you add a before action, so on every action, independent of the controller you are looking for, it will fill the instance variable
class ApplicationController < ActionController::Base
before_action :fill_varieties
private
def fill_varieties
@varieties = Variety.all
end
end
and then after this, create a partial on views/layouts/_footer.html.erb
<ul>
<% @varieties.each do |variety| %>
<li><%= variety.name %></li>
<% end %>
</ul>
of course you need to change the view with the code about how you want to show it.
and on your views/layouts/application.html.erb just call the partial
<%= render "layouts/footer" %>
and it will render on every request
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