【发布时间】:2011-07-22 21:41:26
【问题描述】:
我有一些代码(正在运行),但我只是想确保按照 Rails 约定/最佳实践将它放在正确的位置。代码的目的是在定义“@facility”的情况下生成一组副标题导航链接(这可以在几个控制器中的一个中完成)。现在,我有以下代码,如下所示。
我的问题:这感觉不对,尤其是 html 模板开头的一些逻辑。我还想定义一些其他类似的助手来根据不同的模型定义这些副标题链接。这个逻辑(设置@subhead_links)应该在应用程序控制器中吗?作为每个模型中的方法(所以我会设置@subhead_links = @facility.subhead_links)?
我已经寻找了一些答案,但这类哲学问题不像错误代码那样容易通过谷歌搜索。
在应用程序助手中
# build subhead
def subhead_links(facility)
links = [
{ :label => "Configure Facility", :path => facility_path(facility) },
{ :label => "Waitlists", :path => waitlist_tiers_path(:id => facility.id) },
{ :label => "Applications", :path => sponsors_path(:id => facility.id) }
return links
end
在 application.html.erb 模板中包含的部分
<% if @facility %>
<% @subhead_links = subhead_links(@facility) %>
<% end %>
<% if @subhead_links %>
<nav class="subnav">
<ul>
<% @subhead_links.each do |link| %>
<li><%= link_to link[:label], link[:path] %></li>
<% end %>
</ul>
</nav>
<% end %>
在其他各种控制器中...
@facility = Facility.find(params[:id])
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-3