使用Rails中的映射了解options_for_select

时间:2013-01-20 20:32:18

标签: ruby-on-rails

<form id="earnings_select" action="<%= publishers_earnings_statements_url %>" method="get">
  <% unless current_publisher.earnings_statements.all.size == 0 %>
    <%= select_tag 'id', 
                   options_for_select(current_publisher.earnings_statements.all.map{|s| [s.label, s.id.to_s]}, params[:id]),
                   :id => 'earnings_select_id' %>  
    <input type="submit" value="Go">
  <% end %>
</form>

这是我的代码......有人可以解释current_publisher.earnings_statements.all.map{|s| [s.label, s.id.to_s]}位的用途吗?

我不是Rails专家,很难理解它的含义。任何帮助将不胜感激。

由于

1 个答案:

答案 0 :(得分:5)

Map根据传递给它的块返回的内容创建一个新数组。在这种情况下,它返回一个数组数组,其中包含earning_statements的标签和id。它看起来像

[[label1, id1], [label2, id2]]

然后将此数组用作select标记的选项。标签是显示的文本,id是用户选择的参考。