options_from_collection_for_select错误

时间:2015-11-16 23:44:42

标签: ruby-on-rails ruby

我正在尝试在我的组位置表中发布所有组位置。问题是我不想在我想要显示名称的select标签中发布id。我尝试了几次迭代,没有任何效果。我没有在这里发布所有代码,而是在github上的gist中已经有了相关的代码和错误:

https://gist.github.com/codejoy/19be7b182e372dd98e76

那里发布了错误...基本上我只想要我认为简单的东西(即使我的模型在他们的关系中有点复杂)。我只是无法弄清楚这个错误告诉我的是什么,如果我切换这一行:

<%= select_tag "group_providers", options_from_collection_for_select(GroupLocation.all, 'id' ,@group_locations.map{ |j| j.dba }), :multiple => true%>

对此:

<%= select_tag "group_providers", options_from_collection_for_select(GroupLocation.all, 'id' ,@group_locations.map{ |j| j.id }), :multiple => true%>

错误更改为:

  

提供者中的TypeError#add_location显示   /vagrant/ipanmv2/app/views/providers/add_location.html.erb where line

     

51提出:

     

[2]不是符号也不是字符串提取源(第51行附近):   48 49 50 51 52 53 54

             <tr>
               <td>          
                 <% if @group_locations.count >0 %>
                   <%= select_tag "group_providers", options_from_collection_for_select(GroupLocation.all, 'id'
     

,@ group_locations.map {| j | j.id}),:multiple =&gt;真%GT;                        &lt;%else%&gt;                          &lt;%= select_tag&#34; group_providers&#34;,&#34;添加新...&#34; .html_safe,:multiple =&gt; true,:style =&gt; &#34;宽度:   300像素&#34; %GT;
                       &lt;%end%&gt;

     

Rails.root:/ vagrant / ipanmv2

     

应用程序跟踪|框架跟踪|完整追踪   应用程序/视图/提供商/ add_location.html.erb:51:在   `_app_views_providers_add_location_html_erb__410977632_87411510&#39;   请求

     

参数:

     

{&#34; id&#34; =&gt;&#34; 4&#34;}切换会话转储切换env转储响应

     

接头:

     

1 个答案:

答案 0 :(得分:2)

如果您查看options_from_collection_for_select的文档,您会发现它希望第三个参数是用于选项文本值的方法。在这里使用map方法返回一个组位置ID的数组,它既不是字符串也不是符号,因此是错误。

如果您只想让选项文字成为dba属性的值,请尝试改为:

<%= select_tag "group_providers", options_from_collection_for_select(@group_locations, :id, :dba), :multiple => true %>