【问题标题】: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"

等等

有没有更聪明/简洁的方法来包含两个导航部分?

【问题讨论】:

  • 只需将条件移动到辅助方法
  • 没错,就是这样。好办法。

标签: ruby-on-rails view ruby-on-rails-4 partial-views partial


【解决方案1】:

如果你有controller-namespaces会更好 这会给你 Admin::命名空间

显然您可以包含管理员/views/admin 的视图。

如果你想让/views/public更精确,你也可以定义public命名空间。

【讨论】:

  • 太棒了!如果我添加namespace :admin, part: "admin" do ...(在router.rb 中),我会得到一个可以在条件中检查的参数键。 (没有它,params[:controller] 会为每个新的“子类别”返回“admin/users”、“admin/projects”等)。
猜你喜欢
  • 2011-04-12
  • 1970-01-01
  • 2010-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多