如何从另一个模型迭代到布局?

时间:2012-06-13 02:16:22

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.1

我希望从一个模型中获取集合以显示在所有页面上。

Application.html.erb

 <ul>
    <% @category.each do |c| %>
   <li><%= c.name %></li></ul>
        <% end %>
        </ul>

控制器

 @categories = Category.all

我如何在应用程序控制器中使用它而不必复制并粘贴所有控制器?

2 个答案:

答案 0 :(得分:5)

ApplicationController.rb创建before_filter并定义它以调用特定方法。

例如:

class ApplicationController < ActionController::Base
  before_filter :load_categories

  protected
  def load_categories
    @categories = Category.all
  end
end

现在,您应该可以从所有视图中访问@categories

在您看来:

<ul>
  <% @categories.each do |c| %>
  <li><%= c.name %></li></ul>
  <% end %>
</ul>

希望它对你有所帮助。

答案 1 :(得分:1)

只需使用

<ul>
<% Category.all.each do |c| %>
 <li><%= c.name %></li></ul>
<% end %>
 </ul>

您不必在控制器中设置实例变量。