2012-01-28 165 views
0

我看过this article,并且在HAML部分中出现奇怪的行为。当我访问两个不同的控制器动作时,一个实例工作,另一个失败。下面的代码:“randomController”部分或基于控制器的Rails 3.2视图中的类高亮显示

= link_to_unless_current(t('some.string', :en=>'SomeString'), '/url',{:class=>(controller.controller_name == 'randomController' ? 'current' : 'header-link')}) 

当我输出= controller.controller_name在任一视图中,我得到在主列表页面(所有对象都显示为分页)中,该类不适用,但当移至“显示”页面时,该类突然出现。由于控制器在两者中都是相同的(相同的字符串在任何一种情况下都被打印出来),为什么这个类不同等地被应用?

一般来说,有没有更好的方式来设置基于当前控制器的链接,而不是检查控制器名称? current_page帮手需要控制器+动作,这意味着它不是一个合适的人选。

+0

刚才看到您可以将一个块传递给当前页面上执行的link_to_unless_current。只是包括我想要的课程,它的工作原理! – clekstro 2012-01-28 23:34:22

回答

0

我打算把这个标记为答案,以防别人在同一个问题上绊倒。希望这一格式正确:

 = link_to_unless_current(t('some.string', :en=>'SomeString'), '/url',{:class=>(controller.controller_name == 'randomController' ? 'current' : 'header-link')}) do 
     %span.current 
      = (t('some.string', :en=>'SomeString' 

这显然可以被清理,除去重复的元素,并使用draper最终可能会作为一个应用程序的装饰,这样我可以在网站上的任何视图中使用它。

相关问题