Ruby Enumerable Collect Array仍然显示在列表的末尾

时间:2013-05-20 13:52:49

标签: ruby-on-rails ruby arrays enumeration

我使用Ruby可枚举来创建另一个模型的数组。方法“公司参与”

class Conference < ActiveRecord::Base
  has_many :accountconferences
  has_many :accounts, :through => :accountconferences
  accepts_nested_attributes_for :accounts

  def companiesattending
    accounts.collect {|f| f.name }
  end

end

奇怪的是,当我把它放到一个视图中时,我得到了一个预期的项目列表,然后列表末尾的一些数组成员仍然在一个数组中:

查看结果

    <ul style="list-style-type: none;">
        <li>Company 1</li>
    </ul>

    <ul style="list-style-type: none;">
        <li>Company 2</li>
    </ul>
[&quot;3point5.com&quot;, &quot;Company&quot;, &quot;5.1&quot;, &quot;A O Coolers&quot;, &quot;Abo Gear&quot;, &quot;Access Fund&quot;, &quot;AceCamp.com&quot;, &quot;ACORN&quot;

/app/views/conferences/_accounts.html.erb

<div class="span5">
<h3 class="pull-left">Companies That Are Attending</h3></br></br></br>
 <%= @accounts.each do |f|%>
    <ul style="list-style-type: none;">
        <li><%= f %></li>
    </ul>
 <% end %>
</div>

/app/models/conferences.rb(显示行动)

  def show
    @conference = Conference.find(params[:id])
    @accounts = @conference.companiesattending  
  end

我错过了什么?

2 个答案:

答案 0 :(得分:2)

而不是:

<%= @accounts.each do |f|%>

不使用=

使用此功能
<% @accounts.each do |f|%>

=是您的代码显示数组的原因。

答案 1 :(得分:1)

each返回self,即调用它的对象,<%=显示其内部表达式所评估的内容。 <%=内的表达式为@accounts.each,返回@accounts,显示ergo,@accounts

如果您不希望显示数组,请使用仅{em>执行但不显示代码的<%