对不起,我不能得到一个更好的标题给我的问题,但希望我的解释会给你们一个更好的想法发生了什么?显示不同的控制取决于轨道收集选择(选择)项目
我一个模型Airport
及其他三个车型West
East
和South
那些无论如何也不能只Airport
模型相关需要一些类似这样的表格显示了其他领域。
<%= form_for(@airport) do %>
<%= f.collection_select(:airport_name, AirPortManager.all, etc...) %>
//AirPortManager is a collection of available airports
<div class="west-airports" style="display:none;">
<%= f.collection_select(:airline_name, WestAirlineManager.all, ....) %>
</div>
<div class="east-airports" style="display: none;">
<%= f.collection_select(:airline_name, EastAirlineManager.all, ....) %>
</div>
<div class="south-airports" style="display: none;">
<%= f.collection_select(:airline_name, EastAirlineManager.all, ....) %>
</div>
<% end %>
机场模型validates :airline_name, :presence => true
。现在的问题是与
我的JavaScript。如果用户在AirPortManager.all
中选择机场西,则应该显示west-airports
div`等等。但是我的验证方法airport一直在为:airline_name抛出一个必需的字段错误,如果不是,它保留了先前选择的值。我如何将可见的div值传递给机场参数,或者如果我选择一个空值,则以前的值不应保持不变。下面是我的JavaScript,希望我的问题是有道理的。
<script type="text/javascript">
$(document).ready(function() {
$("#aiport_manager_aiport_name").change(function(){
var value = this.value;
if (value == "West") {
$('.west-aiports').show();
$('.east-airports').attr("disabled", true);
$('.east-airports').hide();
$('.south-airports').attr("disabled", true);
$('.south-airports').hide();
}
else if (value == "East") {
$('.east-airports').show();
$('.west-aports').hide();
$('.west-airports').attr("disabled", true);
$('.south-airports').hide();
$('.south-airports').attr("disabled", true);
}
else if (value == "South") {
$('.south-aiports').show();
$('.west-airports').hide();
$('.west-airports').attr("disabled", true);
$('.east-airports').hide();
$('.east-airports').attr("disabled", true);
}
});
});
</script>
我尝试在各自的div禁用其他collection_selects,但仍然得到了验证错误或得到一个持久的价值。