0

在我的Rails应用程序中,我有一个国家选择选项使用country_select gem,并在国家/地区选择下拉菜单旁边那里是另一个下拉列表显示在“美国”的国家如波纹管代码:D​​ROPRails级联下拉列表:根据上一下拉选项将下拉菜单更改为文本字段

国家选择一个代码DOWN

<div class="row"> 
    <div class="form-group"> 
     <%= f.label :country,'Country', class:"control-label"%> 
     <%= f.country_select(:country , {priority_countries: [ "US"]} ,{class: "form-control"}) %> 
    </div> 
</div> 

状态选择代码从下拉

 <%= f.label :state,'State', class:"control-label" , style: "color: black;"%> 
     <%= f.select(:state, options_for_select(us_states), {}, {class: "form-control"}) %> 

这里us_states方法在application_helper.rb文件中定义像波纹管:

def us_states 
    [ 
     ['Alabama', 'AL'], 
     ['Alaska', 'AK'], 
     ['Arizona', 'AZ'], 
    ...............etc 
    ] 

    end 

这里默认选择的国家是“美”,但如果用户在选择任何其他国家国家选择下拉,然后我想让状态选择下拉到正常文本字段中,而不是下拉列表。 如果用户选择美国以外的国家,我如何才能将状态选择下拉到文本字段中?如果选择的国家是美国,州部分必须保持下降?

回答

4

我建议最初添加文本字段和状态下拉菜单,并根据国家/地区值切换它们。

<%= f.label :state,'State', class:"control-label" , style: "color: black;"%> 
<%= f.select(:state, options_for_select(us_states), {}, {class: "form-control"}) %> 
<%= f.text_field :state,'', class: "form-control",:style=>"display:none"%> 

现在添加切换逻辑在jquery的

<script type='text/javascript'> 
    $("#country_drop_down_id").change(function(){ 
    if($(this).val()=='US'){ 
     $('#state_drop_down_id').show(); 
     $('#state_text_field_id').hide(); 
    }else{ 
     $('#state_drop_down_id').hide(); 
     $('#state_text_field_id').show(); 
    } 
    }); 
</script> 

替换 country_drop_down_id , state_drop_down_id , state_text_field_id 与相应的ID选择器。

+0

@Qaiser Nadeem:我需要在哪里添加jQuery? –

+0

您可以在渲染窗体的相同视图中添加上述脚本。 默认情况下,jquery添加到application.js中,如果它没有添加 // =在app/assets/javascripts/application.js中需要jquery –

+0

我照你所说的做了,但是函数没有在更改下拉列表时执行国家的价值。 –

相关问题