我有一个应用程序助手,它确定我的应用程序助手顶部的导航栏的 css 类(选中或未选中)和链接地址。
当我测试我的控制器时,我收到一大堆关于导航栏的错误(变量返回 nil)。由于导航栏与每个单独的控制器无关,并且它出现在每个页面上,因此最容易做的事情似乎就是这个。
在应用程序助手中:
def navbar_method(category)
c = Category.find_by_name(category)
children = c.children.map {|child| child.name}
if category == "All"
if params[:id] == category || params[:category] == category
"on"
else
"off"
end
else
if params[:id] == category || children.include?(params[:id]) || params[:category] == category || children.include?(params[:category])
"on"
else
"off"
end
end
这是我使用方法 nav_link 的 Navbar 视图的片段,这是我创建的另一个帮助方法,类似于 nav 类。这是一个水平下拉菜单:
在 layouts/application.html.erb 中:
<li id="Home" class="<%= nav_class("All") %>"><%= nav_link("All") %>
<ul>
</ul></li>
<li id="Writing" class="<%= nav_class("Writing") %>"><%= nav_link("Writing") %>
<ul>
<li class="<%= nav_class("Educational") %>"><%= nav_link("Educational") %>
由于此方法中的所有内容都弹出 nil,因此我只是这样做了:
def navbar_method(category)
unless Rails.env.test?
c = Category.find_by_name(category)
#see above
end
end
你怎么看?好的?不好?
因为我得到了一张“不好”的投票,所以我想我会再解释一下。出于某种原因,尽管我可能包含固定装置,但该类别在测试中返回 nil...我想我可以进行广泛的集成测试来测试导航栏...