我有一個模型文檔它具有屬性類和上下文。 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