我想在 Rails 中的导航窗格中实现一个动态类名。
为此,我在控制器中定义了一个属性,如下所示:
class StoresController < ApplicationController
@nav = "store"
def index
...
end
end
然后,我在application.html.erb
文件中使用 @nav
属性,如下所示:
<%= link_to "Store", stores_path, if @nav == 'store' { :class => 'selected' } %>
但它不起作用。我尝试了其他组合,例如将link_to与 () 一起使用或反转if
语法,但没有任何效果。
我的问题:如何在 Rails 中动态设置class
值?什么是最佳实践?
提前谢谢。
@nav 是控制器类实例变量,而不是控制器对象实例变量,并且在操作和相应的模板中不可见。我假设您想依赖当前的控制器,因此您可以执行以下操作:
<%= link_to "Store", stores_path, { :class => params[:controller] == 'stores' ? 'selected' : '' } %>
对我来说,最佳做法是创建一个帮助程序,该帮助程序取决于您当前的路径和给定的路径,返回专有类名甚至整个链接(在这种情况下link_to替换)。