2012-08-12 130 views
0

我想为Rails中的导航窗格实现动态类名。Ruby on Rails:在Rails视图中创建动态类名

为了做到这一点,我在我的控制器中定义的属性是这样的:

class StoresController < ApplicationController 
    @nav = "store" 

    def index 
     ... 
    end 
end 

然后,我用的是@nav属性在我application.html.erb文件是这样的:

<%= link_to "Store", stores_path, if @nav == 'store' { :class => 'selected' } %> 

但它不没有工作。我尝试了其他组合,例如使用link_to with()或反转if语法,但没有任何效果。

我的问题:你如何在Rails中动态设置class值?什么是最佳实践?

在此先感谢。

回答

1

@nav是一个控制器类实例变量而不是控制器对象实例变量,它在您的动作和相应模板中不可见。 我假设你想依靠当前的控制器上,所以你可以做这样的事情:

<%= link_to "Store", stores_path, { :class => params[:controller] == 'stores' ? 'selected' : '' } %> 

对我来说,最好的做法是创建根据您当前的路径上的帮助和给定的路径返回apropriate班级名称,甚至整个链接(在这种情况下link_to替换)。

+0

优秀的pkubicki,它的工作原理。谢谢你的帮助。 – htaidirt 2012-08-13 18:34:55