如何在内联循环中包含“next if”条件

时间:2016-11-18 12:52:40

标签: ruby-on-rails ruby forms ruby-on-rails-5 slim-lang

我想在此循环中包含Dim lrow, i As Integer lrow = Cells(rows.Count, 4).End(xlUp).Row + 1 i = WorksheetFunction.CountA(Range("D1:D" & lrow).SpecialCells(xlCellTypeVisible)) - 1 If i=0 then MsgBox "vs4 is zero" V_S4 = 0 Else

next if

所以我想要一些东西:

 = select_tag :type, options_for_select(Products.statuses.keys.map{ |product_type| [I18n.t("product.#{product_type}"), product_type] }, params[:type])

2 个答案:

答案 0 :(得分:3)

拥有一个列表,您可以根据条件始终selectreject元素:

Products.statuses
        .keys
        .reject { |product_type| product_type == "clothes" } # <= won't be in list
        .map    { |product_type| [I18n.t("product.#{product_type}"), product_type] }

答案 1 :(得分:1)

你几乎是正确的:Ruby中的表达式分隔符是分号;,而不是逗号,,所以它应该是

Products.statuses.keys.map{ |product_type| next if product_type == "clothes"; [I18n.t("product.#{product_type}"), product_type] }
#                                                                          ↑↑↑

您也可以反转逻辑并按如下方式编写:

Products.statuses.keys.map{ |product_type| next [I18n.t("product.#{product_type}"), product_type] unless product_type == "clothes" }