条件HTML属性

时间:2013-04-03 10:02:24

标签: ruby ruby-on-rails-3

在ActionView中,我需要根据条件显示属性。

<%= f.text_field :regmax_remote, {
  :class => 'span2', 
  :style => "display:#{@event.regmax_remote.present? ? "block" : "none"};"
} 
%> 

有更好的方法可以解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

上面的代码很好,如果你只想在它中使用一次,

但如果在很多地方使用它,那么你可能需要帮助

def event_display_style event
  event.regmax_remote.present? ? "block" : "none"
end

如果你有多个基于几个条件的属性,那么你可以使用帮助器以哈希格式返回属性并像这样使用它。

<%= f.text_field :regmax_remote, event_display_style(@event) %>

如果你想要一个带有默认哈希的变量哈希,那么你也可以做这样的事情

<%= f.text_field :regmax_remote, {class: "span2"}.merge(event_display_style(@event)) %>

还有其他一些方法可以让这段代码看起来更好看。你可能也喜欢这个布料宝石。它提供了一个面向对象的控制,可以同时显示辅助视图。

https://github.com/drapergem/draper

答案 1 :(得分:0)

您可以尝试以下内容,

<% if (@event.regmax_remote.present?) %>
  <%= f.text_field :regmax_remote, class: "span2" %>
<% end %>

请勿复制相同内容,只需根据您的代码进行编辑,并以此为例。