我正在尝试在我的组位置表中发布所有组位置。问题是我不想在我想要显示名称的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转储响应
接头:
无
答案 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 %>