我最近写了一些辅助代码,帮助我排除其中一家商店已经贴出营业时间为星期几。适应您的规格不应太难。
更新:增加了问题特定的代码并更新了更有效的拒绝块。
module HoursHelper
...
def generateDayStrings (unavailable_days)
all_days = [ ['Sunday', 'Sun'],
['Monday', 'Mon'],
['Tuesday', 'Tue'],
['Wednesday', 'Wed'],
['Thursday', 'Thu'],
['Friday', 'Fri'],
['Saturday', 'Sat'] ]
all_days.reject do |day|
(day - unavailable_days).size != 2
end
end
...
end
<%= f.select :day_of_week, generateDayStrings(@days_with_hours) %>
# @days_with_hours = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri']
# generateDayStrings(@days_with_hours) = [ ['Sunday', 'Sun'], ['Saturday', 'Sat'] ]
为您的特定的代码库,它很可能是这个样子:
module PaymentsHelper
...
def generatePaymentAmountSelectArray (unavailable_denoms)
all_denoms = [ ['$ 0', '0'],
['$ 1', '1'],
['$ 2', '2'],
['$ 5', '5'],
['$ 10', '10'] ]
# or all_denoms = Payment::AMOUNT_VALUES
# although not sure how this works with a hash.
all_denoms.reject do |current_denom|
(current_denom - unavailable_denoms).size != 2
end
end
...
end
<%= f.select :amount, generatePaymentAmountSelectArray(@used_values), {:blank => false}) %>
# just make sure you set @used_values in your controller
我觉得有这样做的更好的办法,所以,如果我还记得,我会更新它。
感谢您的输入。我设法找到了一个似乎可以在我的模型中工作的单线程,使用:'.delete_if {| k,v | v