Rails:使用IF基于DropDown选择显示或隐藏元素

时间:2016-12-27 08:18:37

标签: ruby-on-rails

使用 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 %>

2 个答案:

答案 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根据您的选择元素切换