无法获得明显的宝石来在同一页面上呈现控制器动作视图而不会消失标签

时间:2012-01-15 15:11:01

标签: ruby ruby-on-rails-3 ruby-on-rails-3.1 rubygems

我是一个ruby on rails newbie并开发了一个rails 3.1应用程序,其中包括twitter-bootstrap和formtastic-bootstrap宝石的表格。

我的应用程序中有一个控制面板位于命名空间区域。

在views目录中的命名空间区域下,我有一个控制面板目录,其下面有视图页面,除了与控制器名为controlpanel_controller.rb的控制器相关的1个视图页面之外的任何控制器操作都不对应。作为控制面板的主页面。

目录结构如下:

应用程序/控制器/管理器/ controlpanel_controller.rb

应用程序/视图/经理/ ControlPanel控制/ controlpanel.html.erb

应用程序/视图/经理/ ControlPanel控制/ project.html.erb

应用程序/视图/经理/ ControlPanel控制/ graphs.html.erb

我相信我想要做的很简单,我创建了一个导航菜单,链接到此控制面板目录下的不同视图,我想要的是在其中一个视图中显示选项卡(project.html.erb) )当用户单击标记为项目的导航菜单中的链接时。

问题: 我已经设法实现了我需要的选项卡,它映射到不同的控制器操作并在视图中显示,但是在单击选项卡时,tabulous gem不会在同一页面上呈现操作视图,而是将我链接到另一个页面。所以基本上选项卡消失了,我被路由到我将点击的选项卡的控制器视图操作,而不是保持在同一页面上。任何人都可以提供任何建议,为什么这不能按预期工作?因为我不知道我哪里出错了。

我已将代码包含在我的project.html.erb视图文件和下面的tabulous.rb文件中。

project.html.erb:

 <ul class="tabs" >
        <%= tabs %>
    </ul>

tabulous.rb:

     config.tabs do
    [
      #------------------------------------------------------------------------------------------------------------------------#
      #    TAB NAME                     |    DISPLAY TEXT       |    PATH                    |    VISIBLE?    |    ENABLED?    #
      #------------------------------------------------------------------------------------------------------------------------#
      [    :manager_controlpanel_tab    ,    'Control panel'    ,    ''                      ,    false       ,    true        ],
      [    :manager_tasks_tab           ,    'Tasks'            ,    :manager_tasks_path     ,    true        ,    true        ],
      [    :manager_graphs_tab          ,    'Graphs'           ,    :manager_graphs_path    ,    true        ,    true        ],
      #------------------------------------------------------------------------------------------------------------------------#
      #    TAB NAME                     |    DISPLAY TEXT       |    PATH                    |    VISIBLE?    |    ENABLED?    #
      #------------------------------------------------------------------------------------------------------------------------#
    ]
  end

  #-------------
  #   ACTIONS
  #-------------
  #
  # This is where you hook up actions with tabs.  That way tabulous knows
  # which tab and subtab to mark active when an action is rendered.
  #
  # CONTROLLER
  #   the name of the controller
  # ACTION
  #   the name of the action, or :all_actions
  # TAB
  #   the name of the tab or subtab that is active when this action is rendered

  config.actions do
    [
      #------------------------------------------------------------------------------------#
      #    CONTROLLER               |    ACTION          |    TAB                          #
      #------------------------------------------------------------------------------------#
      [    :manager_controlpanel    ,    :all_actions    ,    :manager_controlpanel_tab    ],
      [    :manager_tasks           ,    :all_actions    ,    :manager_tasks_tab           ],
      [    :manager_graphs          ,    :all_actions    ,    :manager_graphs_tab          ],
      #------------------------------------------------------------------------------------#
      #    CONTROLLER               |    ACTION          |    TAB                          #
      #------------------------------------------------------------------------------------#
    ]
  end

2 个答案:

答案 0 :(得分:0)

听起来你的控制器,动作和视图的组织方式与表达方式不同。例如,您说“我想要的是在其中一个视图中显示选项卡”,但对于服务器端选项卡解决方案(如tabulous和TabsOnRails),每个选项卡的内容应该是不同的视图。

如果你有四个标签,你应该有四个动作 - 每个标签一个。这四个行动应该有自己的看法。您应该在布局中调用选项卡助手,而不是单个视图。

因此,您需要重新组织您的操作和视图,或者您尝试做的事情与表格不符(或许您想要Ajax标签?)。

希望这有帮助。

答案 1 :(得分:0)

您需要将下面的代码移动到布局中。例如,对application.html.erb:

#app/application.html.erb
<ul class="tabs" > 
    <%= tabs %> 
 </ul>