0

我想在 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 或反转if语法,但没有任何效果。

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

提前致谢。

4

1 回答 1

1

@nav 是控制器类实例变量而不是控制器对象实例变量,它在您的操作和相应模板中不可见。我假设您想依赖当前控制器,因此您可以执行以下操作:

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

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

于 2012-08-12T22:30:05.800 回答