Rails:有条件地将CLASS atribute设置为HTML标记



我的问题涉及Rails+HAML

我想有条件地将类atribute设置为HTML标记。我发现,实现这一点的最佳方法是设置控制器变量,这些变量用于设置适当HTML标记的类。

我在谷歌上找到的唯一解决方案告诉我在HAML中使用条件。但我不认为这是最好的方法,因为视图不应该有任何逻辑控制。

那么,我怎么能直接从控制器上做到这一点呢?哪些控制器变量可以设置html标记的类?

Haml确实不鼓励在视图中使用逻辑,而是更容易创建助手。因此,一种解决方案是创建包含任何逻辑的helper方法。

您无法从控制器控制html标记,视图就是用于此目的的。如果您不想创建一个单独的辅助对象(这对您的需求来说太多了),请使用rails附带的现有标记辅助对象。它接受一个选项的散列,如果你愿意,可以从你的控制器初始化。

不过,我还是去找帮手。

对于简单的逻辑(如设置类),可以使用haml_tag将类属性值公开为字符串:

- haml_tag :th, class: "#{'hilite' if params[:order_by]=='title'}" do
    - haml_concat link_to 'Movie Title', movies_path(order_by: 'title')

通过这种方式,视图中仍然有条件逻辑,但在这种情况下求助于helper可能有些过头了。

如果您不希望在您的haml模板中使用逻辑,那么您应该将其移动到助手中。控制器实际上没有办法为特定的html标记设置类;这不是控制器的作用。

最新更新