我是一个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
答案 0 :(得分:0)
听起来你的控制器,动作和视图的组织方式与表达方式不同。例如,您说“我想要的是在其中一个视图中显示选项卡”,但对于服务器端选项卡解决方案(如tabulous和TabsOnRails),每个选项卡的内容应该是不同的视图。
如果你有四个标签,你应该有四个动作 - 每个标签一个。这四个行动应该有自己的看法。您应该在布局中调用选项卡助手,而不是单个视图。
因此,您需要重新组织您的操作和视图,或者您尝试做的事情与表格不符(或许您想要Ajax标签?)。
希望这有帮助。
答案 1 :(得分:0)
您需要将下面的代码移动到布局中。例如,对application.html.erb:
#app/application.html.erb
<ul class="tabs" >
<%= tabs %>
</ul>