Rails模型随处可见

时间:2018-08-04 23:47:06

标签: ruby-on-rails ruby

嗨,我有一个带有一个模型的Rails应用程序,我想在每页上显示的页脚中显示一个循环。

在品种模型中

class Variety < ApplicationRecord
  belongs_to :request
end

我发现添加:

@varieties = Variety.all

每个视图都可以,但是我确信这是不好的做法。

1 个答案:

答案 0 :(得分:2)

在这种情况下,最好执行以下操作,在您的应用程序控制器中添加一个before操作,这样,在每个操作上,无论您要寻找的控制器如何,它都会填充实例变量

class ApplicationController < ActionController::Base

  before_action :fill_varieties

  private

  def fill_varieties
    @varieties = Variety.all
  end

end

然后在此之后,在views / layouts / _footer.html.erb上创建局部视图

<ul>
  <% @varieties.each do |variety| %>
    <li><%= variety.name %></li>
  <% end %>
</ul>

当然,您需要使用有关如何显示它的代码来更改视图。

并在您的views / layouts / application.html.erb上仅调用部分

<%= render "layouts/footer" %>

它将在每个请求上呈现