0

我看过 这篇文章,并且在 HAML 部分中出现了奇怪的行为。当我访问两个不同的控制器操作时,一个实例工作,而另一个失败。这是代码:

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

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

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

4

1 回答 1

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的应用程序装饰器,以便我可以在站点的任何视图中使用它。

于 2012-01-29T11:43:41.603 回答