在 ActionView 中,我需要根据条件显示属性。
<%= f.text_field :regmax_remote, {
:class => 'span2',
:style => "display:#{@event.regmax_remote.present? ? "block" : "none"};"
}
%>
有没有更漂亮的方法来解决这个问题?
在 ActionView 中,我需要根据条件显示属性。
<%= f.text_field :regmax_remote, {
:class => 'span2',
:style => "display:#{@event.regmax_remote.present? ? "block" : "none"};"
}
%>
有没有更漂亮的方法来解决这个问题?
上面的代码很好,如果你打算只使用一次,
但如果这将在许多地方使用,那么你可能需要帮助
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)) %>
还有一些其他方法可以使这段代码看起来更好。你可能也喜欢 draper gem。它提供了对显示的面向对象的控制,同时可以访问视图助手。
你可以尝试如下,
<% if (@event.regmax_remote.present?) %>
<%= f.text_field :regmax_remote, class: "span2" %>
<% end %>
不要复制相同的内容,只需根据您的代码进行编辑并将其用作示例。