使用 IF语句,如何根据下拉选项(transactionType)中的值隐藏/显示元素
这是我一直在尝试的东西
我哪里出错了?
<%= form_for(transaction) do |f| %>
<div class="field">
<%= f.label :transactionType %>
<%= f.select :transactionType, ['Income', 'Expense']%>
</div>
<%= if transaction.transactionType == 'Income' %>
<div class="field">
<%= f.label :amount %>
<%= f.number_field :amount, options = { max: 0 }%>
</div>
<% else %>
<div class="field">
<%= f.label :amount %>
<%= f.number_field :amount, options = { min: 0 }%>
</div>
<% end %>
答案 0 :(得分:3)
如何使用css类...如果要隐藏视图中的元素... 因此,如果您使用的是bootstrap,则可以使用隐藏的class.check更多here。
在下面的示例中,我使用了ternary operator,就像if else
一样。
例如: -
<%= form_for(transaction) do |f| %>
<div class="field">
<%= f.label :transactionType %>
<%= f.select :transactionType, ['Income', 'Expense']%>
</div>
<!-- here comes ternary operator -->
<div class="field <%= transaction.transactionType == 'Income' ? 'present' : 'hidden' %>">
<%= f.label :amount %>
<%= f.number_field :amount, options = { max: 0 }%>
</div>
<div class="field <%= transaction.transactionType != 'Income' ? 'present' : 'hidden' %>"">
<%= f.label :amount %>
<%= f.number_field :amount, options = { min: 0 }%>
</div>
如果不使用bootstrap,您可以创建自定义类来隐藏/显示元素。
答案 1 :(得分:1)
在相当长的一段时间内没有使用erb,但我认为你需要改变
<%= if transaction.transactionType == 'Income' %>
应该是
<% if transaction.transactionType == 'Income' %>
但这仅适用于初始状态。之后,您将需要jquery根据您的选择元素切换