Rails:有条件地显示/隐藏表单字段的最佳方式?

我有一个模型文档 ,它具有属性种类上下文 。 Kind是一个整数,用作枚举(使用优秀的active_enum gem)。 上下文仅适用于类型为“2”的文档,即如果文档是2以外的任何类型,则上下文将为空白。

因此,在表单页面中创建一个新文档,我有一个来选择类型,并为上下文创建一个textarea,它最初是隐藏的:

  ...   ...  

并且使用jQuery的show()和hide()方法显示和隐藏textarea,该函数绑定到下拉列表中的change()事件。

到现在为止还挺好。 但是在文档的编辑页面上,我不希望上下文textarea 始终隐藏在初始页面加载上,因为我们可能正在编辑类型2的文档。 因此,如果我们正在编辑类型2的文档,我希望最初显示textarea,但在其他情况下隐藏。

这就是我现在拥有的:

      

有没有更好的方法呢? 这对我来说有点冗长和多余; 有没有办法我只能调用f.text_areaf.text_area包含style:选项?

还是我在思考这个?

用这个 :

  <%= f.text_area :context, placeholder: 'Context', style: "#{'display:none' if @document.kind == 2}" %> 

或者你可以为此添加一个css类,

 display-none{ display:none; } <%= f.text_area :context, placeholder: 'Context', class: "#{'display-none' if @document.kind == 2}" %> 

谢谢

或者你可以试试javascript? 它是一种减少重复代码的方法,如果你有许多字段要隐藏,这种方式有一些优点。

 <%= f.text_area :context, placeholder: 'Context' %>