在我的形式,我有這樣如何自動填充導軌4中的選擇框?
<%= f.select :form_name, get_form_names, { }, { class: 'selectpicker', required: true } %>
我有另外一個選擇框<%= f.select :form_fields %>
一個選擇框。
現在,當用戶選擇form_name
時,我想根據表單的名稱填充form_fields
選擇框的選項。
我在我的控制器寫了一個新的方法來獲取form_fields
def get_form_fields
@fields = (params[:form_is].constantize).column_names
respond_to do |format|
format.js
end
end
我
routes.rb
get 'export_from_form/get_form_fields'
resources: export_from_forms
和我嘗試了以下JS獲取表單字段數據
$(function(){
$("#export_from_form_form_name").on('change', function(){
var form_name = $("#export_from_form_form_name:selected").val();
$.ajax({
url: "get_form_fields",
type: 'GET',
dataType: 'script',
data: { form_is: form_name},
error: function(jqXHR, textStatus, errorThrown){
console.log("AJAX Error: " + errorThrown);
},
success: function(data, textStatus, jqXHR){
console.log('Dynamic column slect OK! ' + data);
}
});
});
});
編輯
現在我能夠獲得一個form_fields數組作爲json編碼數組。但不管我怎麼努力,我不能追加數組作爲選項
<%= f.select :form_fields,[], { prompt: "Select Column names" }, { :multiple => true, class: 'selectpicker', required: true } %>
這是我的JS:
$(function(){
$("#export_from_form_form_name").on('change', function(){
var name =$("#export_from_form_form_name").val();
$.ajax({
url: "get_columns",
type: 'GET',
dataType: 'json',
data: { form_is: name},
error: function(jqXHR, textStatus, errorThrown){ console.log("AJAX Error: " + errorThrown); },
success: function(data, textStatus, jqXHR){
console.log(data);
change_select(data);
}
});
});
});
function change_select(data) {
$("#export_from_form_form_fields").empty();//remove all previous majors
var length = data.length;
for(i = 0;i<length;i++){
$("#export_from_form_form_fields").append(//add in an option for each major
$("<option></option>").attr("value", data[i]).text(data[i])
);
}
}
您是否可以提供有關如何填充第二個選擇框的其他信息?也許發佈你的整個表單代碼? –
也許使用普通的javascript來做到這一點...或者你想每次有人選擇表單名稱時發送請求? – mahatmanich
@TonyVincent你需要爲此使用JS。 –