包含标题导航的最简洁方法?
Posted
技术标签:
【中文标题】包含标题导航的最简洁方法?【英文标题】:Most concise way to include the header navigation? 【发布时间】:2013-12-24 08:48:28 【问题描述】:在我的 Rails 应用程序中,我有大约 20 个页面,其中 10 个具有公共导航菜单(用于未登录的访问者),10 个具有管理导航菜单(用于已登录的访问者)。
出于 DRY 的原因,我想
<%= render 'layouts/navigation_public' %>
和
<%= render 'layouts/navigation_admin' %>
来自layouts/application.rb
。
但是两个部分的条件句变得很长,即
if params[:controller] == "users" && params[:action] == "show" || if params[:controller] == "static_pages" && params[:action] == "welcome"
等等
有没有更聪明/简洁的方法来包含两个导航部分?
【问题讨论】:
只需将条件移动到辅助方法 没错,就是这样。好办法。 【参考方案1】:如果你有controller-namespaces会更好
这会给你
Admin::
命名空间
显然您可以包含管理员/views/admin
的视图。
如果你想让/views/public
更精确,你也可以定义public
命名空间。
【讨论】:
太棒了!如果我添加namespace :admin, part: "admin" do
...(在router.rb
中),我会得到一个可以在条件中检查的参数键。 (没有它,params[:controller] 会为每个新的“子类别”返回“admin/users”、“admin/projects”等)。以上是关于包含标题导航的最简洁方法?的主要内容,如果未能解决你的问题,请参考以下文章
调用多个 AuthenticationSuccessHandler 的最简洁方法?