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

时间:2012-03-11 18:36:20

标签: html ruby-on-rails model-view-controller controller haml

我的问题关于Rails + HAML

我想有条件地将类属性设置为HTML标记。我发现最好的方法是设置控制器变量,用于设置相应HTML标记的类。

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

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

3 个答案:

答案 0 :(得分:1)

实际上,Haml不鼓励在视图中使用逻辑,而是可以轻松创建帮助程序。因此,一种解决方案是使用内部的任何逻辑创建辅助方法。

您无法控制来自控制器的html标记,视图就是为此目的。 如果您不想创建单独的帮助程序(这对您的要求太多),请使用rails附带的现有tag帮助程序。它接受一个选项哈希,如果你愿意,可以从你的控制器初始化。

但是,我再次寻求帮助。

答案 1 :(得分:1)

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

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

这样你在视图中仍然有条件逻辑,但在这种情况下求助于帮助可能是一种过度杀伤。

答案 2 :(得分:0)

如果您不想在haml模板中使用逻辑,那么您应该将其移动到帮助程序中。控制器真的没办法为特定的html标签设置类;这不是控制器的用途。