如何在仅显示具有特定属性的选项的rails中创建collection_select

时间:2017-01-09 22:35:06

标签: ruby-on-rails ruby drop-down-menu ruby-on-rails-5

我正在构建一个应用程序,用户可以根据各自表中可用的组件(例如,主板表,cpus表等)自定义pc(系统)中的组件。

我希望用户能够通过系统表单中的下拉列表选择选择组件。

我已经能够通过像这样使用collection_select来实现这个目标

<%= collection_select(:system, :motherboard_id, Motherboard.all, :id, :model, prompt: true) %>

但是,collection_select显示表中的所有组件,我希望只显示那些具有available: true属性的组件。

我试过了

<%= collection_select(:system, :motherboard_id, Motherboard.any? {|mobo| mobo.available?} , :id, :model, prompt: true) %>

会产生undefined method 'map' for false:FalseClass screenshot:

我考虑添加一个before_save回调来检查每个项目的可用性,但如果这不是让它工作的唯一方法,我认为这对于UX来说是一个糟糕的决定

1 个答案:

答案 0 :(得分:0)

您可以使用

function myFunctions() {
  var sourceSpreadsheet = SpreadsheetApp.openById(); // source spreadsheet
  var sheets = sourceSpreadsheet.getSheets(); // array of sheets  
  var targetSpreadSheet = SpreadsheetApp.openById();
  var targetSheet = targetSpreadSheet.getSheetByName('Main'); // 
  for(var i=1; i < sheets.length;i++){  
    // var temp = i;
    var tempval = sheets[i].getRange(2,1,1,2).getValues();
    var lastrow = targetSheet.getLastRow(); // Is ts targetSheet?
    var lastcol = targetSheet.getLastColumn(); // Is ts targetSheet?
    targetSheet.getRange(lastrow + 1, lastcol + 1, 1, 2).setValues(tempval);
  }
}