如何在body标签上设置一个等于params [:controller]的动态类

时间:2014-08-05 03:39:13

标签: ruby-on-rails ruby ruby-on-rails-4 haml

我在HAML写这篇文章。我在正文中运行:= params [:controller],它显示当前的url控制器。我想将它设置为haml中body标签中的一个类。

目前我在做:

 %body{:class => '#{params[:controller]}'}

我知道这是错的,我找不到解决方案。这可能很简单。谢谢!

4 个答案:

答案 0 :(得分:2)

您的代码存在一些问题:

1)字符串插值(#{})仅在字符串是双引号而不是单引号时有效。

2)此处不需要字符串插值 - 您可以%body{:class => params[:controller]},因为params[:controller]已经是字符串。

答案 1 :(得分:0)

信任params是不好的做法,所以请使用controller.controller_name来获取当前控制器的名称:

%body{:class => controller.controller_name}

答案 2 :(得分:0)

%body放入HAML会生成一个包含两个 <body>标记的页面。这对我来说太奇怪了,所以我这样做:

:javascript
  $('body').addClass("#{@body_css}");

答案 3 :(得分:-1)

根据文件:

  

Brackets表示用于指定的Ruby哈希   元素的属性。它实际上被评估为Ruby哈希,所以   逻辑将在其中工作,并且可以使用局部变量。

所以你可以在你看来做:

%body{:class => controller_name} #since it's a string and you need not #{} to evaluate