部分在两个不同模型的模板中

时间:2010-12-18 06:32:39

标签: ruby-on-rails

我在Drummer模型和Video模型中创建了左侧导航栏,如下图所示,alt text 所以我选择使用偏 _drummers_list.html.erb

<div id="columnleft">
<img src="/img/alldrummerup.png" alt="" width="150" height="60" />
<% @drummer_list.each do |d| %>
<%= link_to d do%>
<%= d.first_name + ' ' + d.last_name %>
<% end %>
<% end %>
<img src="/img/drummerdown.png" alt="" width="96" height="42" />
</div><!--columnleft-->

问题是@drummer_list实例变量只在鼓手控制器中可用,所以我必须在视频控制器中再次写入,因为DRY原理,我认为使用某些方法只需编写@drummer_list一次,到处使用

我没有花太多时间学习Ruby语言,它是Rails的基础,我认为这就是我无法理解的原因。

1 个答案:

答案 0 :(得分:0)

您可以在application_controller.rb中定义一个方法,该方法将与其他两个控制器共享。也许是这样的:

def find_drummers
  @drummer_list = Drummer.find :all
end

然后从鼓手控制器和视频控制器调用它。我假设你的实际方法可能更复杂。您还可以在Drummer模型对象上放置一个finder方法,并从两个控制器中调用它。