包含标题导航的最简洁方法?

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”等)。

以上是关于包含标题导航的最简洁方法?的主要内容,如果未能解决你的问题,请参考以下文章

在 Python 中设置枚举的最简洁方法是啥? [复制]

调用多个 AuthenticationSuccessHandler 的最简洁方法?

实现动态 HTML 表单的最简洁方法是啥?

将 reduce() 与 + 运算符一起使用的最简洁方法是啥?

确定变量是不是等于值“列表”中的值的最简洁方法

在 Express/EJS 模板中,循环数组的最简洁方法是啥?