我有一个模型文档,它具有属性种类和上下文. Kind是一个整数,用作枚举(使用优秀的active_enum gem).上下文仅适用于类型为“2”的文档,即如果文档是2以外的任何类型,则上下文将为空白.
所以在表单页面中创建一个新文档,我有一个< 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 %>
并且使用jQuery的show()和hide()方法显示和隐藏textarea,该函数绑定到下拉列表中的change()事件.
到现在为止还挺好.但是在文档的编辑页面上,我不希望上下文textarea始终隐藏在初始页面加载上,因为我们可能正在编辑类型为2的文档.所以我希望textarea最初显示为我们是编辑类型2的文档,但在其他情况下隐藏.
这就是我现在拥有的:
<% if @document.kind == 2 %> <%= f.text_area :context,placeholder: 'Context' %> <% else %> <%= f.text_area :context,style: 'display:none' %> <% end %>
有没有更好的方法来做到这一点?这对我来说有点冗长和多余;有没有办法我只能调用f.text_area并有条件地包含style:选项?
还是我在思考这个?
解决方法
用这个 :
<%= f.text_area :context,style: "#{'display:none' if @document.kind == 2}" %>
或者你可以为此添加一个css类,
display-none{ display:none; } <%= f.text_area :context,class: "#{'display-none' if @document.kind == 2}" %>
谢谢