2015-09-17 40 views
1

我有一個使用Bootstrap進行樣式化的Ruby on Rails應用程序。這是表單中的一個片段,我希望一旦選擇了前一個字段的非空值,就可以顯示一個字段。因此,一旦選擇了非空白'標準',我想讓'criteria_reason'字段可見。這個代碼如何解決?有條件地顯示Ruby on Rails表單上的字段

<%= f.select :criteria, ['', 'Yes', 'No', 'Maybe'] %> 

<%= f.text_field :criteria_reason, class:"form-control", placeholder:'Reason', 
     style:"#{'display:none' if :criteria == ''}" %> 

謝謝!

回答

4

您可以使用JavaScript,使其在無形可見當您單擊降-下。

<script type="text/javascript"> 
    $(function() { 
    $("#category_category_id").change(function() { 
     var category = $(this).val(); 
     if (category != "") { 
      $("#category_criteria_reason").show(); 
     } else { 
      $("#category_criteria_reason").hide(); 
     } 
    }); 

    }); 
</script> 

更改category_與你自己的表單類。然後,你可以改變你的默認代碼爲

<%= f.text_field :criteria_reason, class:"form-control", placeholder:'Reason', 
     style:"#{'display:none' if f.object.criteria == ''}" %> 
+0

嗨,我不使用任何類的形式。並且有50對左右的字段需要具備此功能。你能否建議如何調整你的代碼以適應? Thansk –

+0

在我的代碼中,我的表單類似於'<%= form_for(@category,url:admin_categories_url,html:{method:'post',multipart:true})do | f | %>'所以我的班級形式是'category'。然後,您必須在JavaScript代碼中將您的前綴「id」更改爲您的類形式。例如:如果你的類'post',你可以在javascript中更改爲'$(「#post_criteria_reason」)''。最後,把你的JavaScript放在你的表單下面。我希望它能幫助你很多。 – akbarbin

+0

感謝它的工作。 –

2

致電form_for @object do |f|您正在將@object轉換爲ActionView::FormBuilder。在f您可以通過調用f.object

所以在這種情況下,訪問相關的對象,你需要做的

<%= f.text_field :criteria_reason, class:"form-control", placeholder:'Reason', 
     style:"#{'display:none' if f.object.criteria == ''}" %> 

看到http://api.rubyonrails.org/classes/ActionView/Helpers/FormBuilder.html

+1

嗨,感謝發佈。這在我提交表單後有效。不過,在表單提交之前,我需要根據以前的選擇**隱藏該字段。 –

相關問題