我有一个模型文档它具有属性类和上下文。 Kind是一个用作枚举的整数(使用优秀的active_enum
宝石)。上下文仅适用于种类为“2”的文档,即如果文档是除2之外的任何种类,则上下文将为空。Rails:有条件地显示/隐藏表单域的最佳方法?
所以在表单页面创建一个新的文件,我有一个<select>
选择那种,和上下文一个textarea,它最初是隐藏的:
<%= form_for @document do |f| %>
...
<%= f.text_area :context, placeholder: 'Context', style: 'display:none' %>
<%= f.select :kind, Document.active_enum_for(:kind).to_select %>
...
<% end %>
而且textarea的显示和隐藏在绑定到下拉列表中的change()事件的函数中使用jQuery的show()和hide()方法。
到目前为止,这么好。但在编辑页的文件,我不希望上下文textarea到总是隐藏在初始页面加载,因为我们可能会编辑一个文件的种类。因此,如果我们正在编辑类型2的文档,但是在其他情况下隐藏了文本区域,我希望最初显示textarea。
这是我现在有:
<% if @document.kind == 2 %>
<%= f.text_area :context, placeholder: 'Context' %>
<% else %>
<%= f.text_area :context, placeholder: 'Context', style: 'display:none' %>
<% end %>
是不是有这样做的更好的办法?这对我来说有点罗嗦和多余,有没有办法可以只有一个电话f.text_area
,并有条件地包括style:
选项?
或者我是否在意这个?
没有内联样式请... – nXqd
我同意内联样式是一个可怕的想法99%的时间,但我认为“显示:没有;”对于将要隐藏并使用Javascript显示的元素可能是一个例外。 – GMA