给出此ERB代码
<% @client.sessionables.ordered.by_program_completion.reverse_each do | program_name_and_completion, sessionables | %>
<% program_name, program_completion_date = program_name_and_completion %>
<% # Render stuff... %>
<% end %>
我想摆脱第二行,在这里我使用多变量赋值从program_name
数组中提取program_completion_date
和program_name_and_completion
。人们会假设它可以直接在块分配中完成,例如
sessionables.by_program_completion.each do | [program_name, program_completion_date], sessionables |
但是以上代码段无效,所以我的问题是:
您可以按以下方式内联提取参数:
<% @client.sessionables.ordered.by_program_completion.reverse_each do |(program_name, program_completion_date), sessionables| %>
或者使用更少的冗长语法编写同一件事(因此更容易看到正在发生的事情!):
[[[1, 2], 3]].each { |(a, b), c| ... }
在块内,我们得到:a == 1, b == 2, c == 3
。