当前位置:  开发笔记 > 后端 > 正文

如何在Ruby on Rails中实现特定于部分的导航?

如何解决《如何在RubyonRails中实现特定于部分的导航?》经验,为你挑选了3个好方法。

我有一个Ruby/Rails应用程序,有两个或三个主要"部分".当用户访问该部分时,我希望显示一些子导航.所有三个部分都使用相同的布局,因此我无法"硬编码"导航到布局中.

我可以想到几种不同的方法来做到这一点.我想为了帮助人们投票,我会把它们作为答案.

还有其他想法吗?或者你投票给谁?



1> Olly..:

您可以使用partials轻松完成此操作,假设每个部分都有自己的控制器.

比方说,你有三个部分称为帖子,用户管理员,每个都有它自己的控制器:PostsController,UsersControllerAdminController.

在每个相应的views目录中,您声明一个_subnav.html.erb部分:

/app/views/users/_subnav.html.erb
/app/views/posts/_subnav.html.erb
/app/views/admin/_subnav.html.erb

在每个subnav部分中,您声明了特定于该部分的选项,因此/users/_subnav.html.erb可能包含:


虽然/posts/_subnav.html.erb可能包含:


最后,一旦完成此操作,您只需要在布局中包含subnav partial:

    
<%= render :partial => "subnav" %>
<%= yield %>



2> Matt Rogish..:

    部分渲染.这与helper方法非常相似,除了布局可能有一些if语句,或者将其传递给helper ...



3> webmat..:

至于你的子菜单的内容,你可以在每个控制器中以声明的方式进行.

class PostsController < ApplicationController
#...
protected
  helper_method :menu_items
  def menu_items
    [
      ['Submenu 1', url_for(me)],
      ['Submenu 2', url_for(you)]
    ]
  end
end

现在,无论何时从视图中调用menu_items,您都可以使用正确的列表来迭代特定控制器.

这比使用逻辑放在视图模板中更清晰.

请注意,您可能还想在ApplicationController中声明一个默认(空?)menu_items.

推荐阅读
黄晓敏3023
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有